国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
關(guān)鍵要點(diǎn)
丟棄部分本地更改
將特定文件重置為以前的狀態(tài)
使用 Reflog 恢復(fù)丟失的版本
恢復(fù)已刪除的分支
將提交移動到不同的分支
撤銷錯誤是一種超能力
關(guān)于使用 Git 撤銷錯誤的常見問題解答 (FAQ)
如何撤消 git add 操作?
我可以撤消 git commit 嗎?
如何撤消特定文件中的更改?
如何查看我的 Git 歷史記錄?
我可以撤消 git push 嗎?
如何撤消多個提交?
軟重置和硬重置有什么區(qū)別?
硬重置后我可以恢復(fù)提交嗎?
首頁 科技周邊 IT業(yè)界 用git撤消錯誤的5種方法

用git撤消錯誤的5種方法

Feb 10, 2025 pm 12:19 PM

5 Ways to Undo Mistakes with Git

軟件開發(fā),無論經(jīng)驗(yàn)多豐富,都難免出錯。但優(yōu)秀程序員與普通程序員的區(qū)別在于,他們知道如何撤銷錯誤!

如果你使用 Git 作為版本控制系統(tǒng),那么你已經(jīng)擁有了一套強(qiáng)大的“撤銷工具”。本文將向你展示五種強(qiáng)大的 Git 撤銷錯誤的方法!

關(guān)鍵要點(diǎn)

  • Git 允許用戶通過丟棄不需要的本地更改來撤銷代碼中的錯誤。這可以使用 git restore 命令完成,該命令會將文件重置為其最后一次提交的狀態(tài)。為了更精細(xì)的控制,可以使用 -p 標(biāo)志在補(bǔ)丁級別丟棄更改。
  • git log 命令可用于將特定文件恢復(fù)到特定版本。用戶可以識別文件損壞的“錯誤提交”,然后使用 git checkout 命令將文件恢復(fù)到錯誤提交之前的版本。
  • Git 的 Reflog 工具可用于恢復(fù)丟失的版本或已刪除的分支。Reflog 記錄本地存儲庫中所有 HEAD 指針的移動,允許用戶返回到以前的狀態(tài)并恢復(fù)丟失的數(shù)據(jù)。
  • 用戶可以使用 git cherry-pick 命令將提交移動到不同的分支。如果提交到錯誤的分支,用戶可以檢出正確的分支,將提交移動過去,然后使用 git reset 從原始分支中刪除不需要的提交。

丟棄部分本地更改

編碼過程通常很混亂。有時,感覺像是兩步前進(jìn),一步后退。換句話說:你編寫的一些代碼很棒……但有些則不然。這就是 Git 可以幫助你的地方:它允許你保留好的部分,并丟棄不再需要的更改。

讓我們來看一個包含一些“本地”更改(即尚未提交的更改)的示例場景。

5 Ways to Undo Mistakes with Git

注意:為了更好的概述和更清晰的可視化,我在一些屏幕截圖中使用了 Tower Git 桌面客戶端。你不需要 Tower 就可以學(xué)習(xí)本教程。

讓我們先解決 general.css 中的問題。我們所做的更改完全朝著錯誤的方向發(fā)展。讓我們撤銷所有更改,并重新創(chuàng)建該文件的最后一次提交狀態(tài):

$ git restore css/general.css

請注意,或者,我也可以使用 git checkout 命令來達(dá)到相同的結(jié)果。但是因?yàn)?git checkout 有很多不同的用途和含義,所以我更傾向于使用稍微更新一些的 git restore 命令(它只專注于這些類型的任務(wù))。

我們在 index.html 中的第二個問題有點(diǎn)棘手。我們在這個文件中做的一些更改實(shí)際上是很好的,而只有一部分需要撤銷。

5 Ways to Undo Mistakes with Git

同樣,git restore 命令可以解決問題——但這次要使用 -p 標(biāo)志,因?yàn)槲覀円钊氲健把a(bǔ)丁”級別:

$ git restore css/general.css

然后,Git 會引導(dǎo)你,并詢問你——對于該文件中的每一塊更改——你是否要丟棄它。

5 Ways to Undo Mistakes with Git

你會注意到,我對第一塊更改輸入了“n”(為了保留它),對第二塊更改輸入了“y”(為了丟棄它)。該過程完成后,你會看到只有第一塊有價值的更改保留了下來——就像我們想要的那樣!

將特定文件重置為以前的狀態(tài)

有時,你可能想要將特定文件恢復(fù)到特定版本。例如,你知道 index.html 在之前的某個時間點(diǎn)工作正常,但現(xiàn)在不行了。這時你想要倒退時間,但只針對這個特定文件,而不是整個項(xiàng)目!

我們首先需要找出我們想要恢復(fù)的哪個確切版本。使用正確的參數(shù)集,你可以讓 git log 命令顯示你單個文件的歷史記錄:

$ git restore -p index.html

5 Ways to Undo Mistakes with Git

這只會顯示 index.html 被更改的提交,這對于查找導(dǎo)致問題出現(xiàn)的“壞蘋果”版本非常有用。

如果你需要更多信息,并想要查看這些提交的內(nèi)容,你可以讓 Git 使用 -p 標(biāo)志顯示這些提交中的實(shí)際更改:

$ git log -- index.html

一旦我們找到了導(dǎo)致我們可愛的小文件損壞的錯誤提交,我們就可以繼續(xù)修復(fù)錯誤了。我們將通過恢復(fù)錯誤提交之前版本的該文件來做到這一點(diǎn)!這很重要:我們不想恢復(fù)引入錯誤的提交中的文件,而是恢復(fù)最后一個良好狀態(tài)——該提交之前的那個提交!

$ git log -p -- index.html

~1 附加到錯誤提交的哈希值將指示 Git 執(zhí)行以下操作:轉(zhuǎn)到引用的提交之前的一個版本。

執(zhí)行該命令后,你會發(fā)現(xiàn) index.html 在你的本地工作副本中被修改了:Git 為我們恢復(fù)了該文件的最后一個良好版本!

使用 Reflog 恢復(fù)丟失的版本

Git 急救包中的另一個強(qiáng)大的撤銷工具是“Reflog”。你可以把它想象成一個日志,Git 在其中記錄本地存儲庫中發(fā)生的所有 HEAD 指針移動——例如提交、檢出、合并和變基、cherry-pick 和重置。所有更重要的操作都會在這里被很好地記錄下來!

當(dāng)然,這樣的日志非常適合那些事情進(jìn)展不順利的情況。因此,讓我們先制造一個小災(zāi)難——然后我們可以用 Reflog 來修復(fù)它。

假設(shè)你確信你最近的幾次提交都不好:你想擺脫它們,因此使用了 git reset 來返回到之前的版本。結(jié)果,“錯誤”提交從你的提交歷史中消失了——正如你想要的那樣。

5 Ways to Undo Mistakes with Git

但正如生活有時那樣,你注意到這是一個壞主意:最終,這些提交并沒有那么糟糕!但壞消息是,你剛剛將它們從你的存儲庫的提交歷史中刪除了!?

5 Ways to Undo Mistakes with Git

這是 Git 的 Reflog 工具的經(jīng)典案例!讓我們看看它如何拯救你:

$ git restore css/general.css

5 Ways to Undo Mistakes with Git

讓我們逐一分解:

  • 首先,Reflog 非常容易打開:一個簡單的 git reflog 就足夠了。
  • 其次,你會注意到記錄的狀態(tài)按時間順序排序,最新的狀態(tài)在頂部。
  • 如果你仔細(xì)觀察,你會發(fā)現(xiàn)最頂部的(也就是最新的)項(xiàng)目是一個“重置”操作。這正是我們 20 秒前所做的。顯然,這個日志有效?
  • 如果我們現(xiàn)在想要撤消我們的無意“重置”,我們可以簡單地返回到之前的狀態(tài)——這也在這里被很好地記錄下來!我們可以簡單地將該先前狀態(tài)的提交哈希復(fù)制到剪貼板,然后從中開始。

為了恢復(fù)此先前狀態(tài),我們可以再次使用 git reset,或者簡單地創(chuàng)建一個新分支:

$ git restore -p index.html

5 Ways to Undo Mistakes with Git

正如我們可以高興地驗(yàn)證的那樣,我們的新分支包含了我們認(rèn)為通過意外的 git reset 故障而丟失的提交!

恢復(fù)已刪除的分支

Reflog 也可在其他情況下派上用場。例如,當(dāng)你無意中刪除了一個你真的不應(yīng)該刪除的分支時。讓我們來看一下我們的示例場景:

$ git log -- index.html

讓我們假設(shè)我們的客戶/團(tuán)隊負(fù)責(zé)人/項(xiàng)目經(jīng)理告訴我們,我們一直在開發(fā)的漂亮的分析功能不再需要了。我們井井有條,當(dāng)然會刪除相應(yīng)的 feature/analytics 分支!

上面你可以看到,在我們的示例場景中,我們當(dāng)前檢出了該分支:feature/analytics 是我們當(dāng)前的 HEAD 分支。為了能夠刪除它,我們必須首先切換到另一個分支:

$ git restore css/general.css

Git 告訴我們我們即將做一些非常嚴(yán)重的事情:由于 feature/analytics 包含在其他地方不存在的唯一提交,因此刪除它將破壞一些(可能是有價值的)數(shù)據(jù)。好吧……既然不再需要該功能,我們可以繼續(xù):

$ git restore -p index.html

你可能已經(jīng)預(yù)料到接下來會發(fā)生什么:我們的客戶/團(tuán)隊負(fù)責(zé)人/項(xiàng)目經(jīng)理高興地告訴我們,該功能又回來了!? 他們畢竟想要繼續(xù)進(jìn)行!?

同樣,我們面臨一個糟糕的情況,我們可能丟失了寶貴的數(shù)據(jù)!因此,讓我們看看 Reflog 是否可以再次拯救我們:

$ git log -- index.html

5 Ways to Undo Mistakes with Git

如果你仔細(xì)觀察,好消息就會顯而易見。在我們(災(zāi)難性地)能夠刪除我們的分支之前,我們必須執(zhí)行 git checkout 以切換到其他分支(因?yàn)?Git 不允許你刪除當(dāng)前分支)。當(dāng)然,此檢出也記錄在 Reflog 中。為了恢復(fù)我們已刪除的分支,我們現(xiàn)在可以簡單地將之前的狀態(tài)作為新分支的起點(diǎn):

$ git log -p -- index.html

瞧:我們的分支起死回生了!???

如果你碰巧使用的是 Tower 等桌面 GUI,撤消此類錯誤通常就像按下 CMD Z 一樣簡單。

5 Ways to Undo Mistakes with Git

將提交移動到不同的分支

最后,讓我們再來看一個“哦,不!”部門的經(jīng)典案例:在錯誤的分支上提交。

今天,許多團(tuán)隊都制定了一條規(guī)則,禁止直接提交到長期分支,如“main”、“master”或“develop”。通常,新的提交應(yīng)該只通過合并/變基到達(dá)這些分支。然而,我們有時會忘記并直接提交……

讓我們以以下場景為例。

5 Ways to Undo Mistakes with Git

我們應(yīng)該在 feature/newsletter 上提交,但無意中在 master 分支上觸發(fā)了提交。讓我們一步一步地看看解決方案。

首先,我們必須確保這次我們在正確的分支上,所以我們正在檢出 feature/newsletter

$ git checkout <bad-commit-hash>~1 -- index.html

現(xiàn)在我們可以使用 cherry-pick 命令安全地將該提交移動過去:

$ git reflog

我們可以查看 feature/newsletter,將會看到該提交現(xiàn)在也存在于這里。

5 Ways to Undo Mistakes with Git

到目前為止,一切順利。但是 cherry-pick 沒有從 master 分支(它永遠(yuǎn)不應(yīng)該在那里)刪除提交。因此,我們也必須在那里清理我們的爛攤子:

$ git restore css/general.css

我們切換回 master,然后使用 git reset 從歷史記錄中刪除(這里)不需要的提交。

最后,一切又恢復(fù)正常了——所以你現(xiàn)在可以開始你的快樂舞蹈了!???

撤銷錯誤是一種超能力

我以前說過,而且不幸的是我們都知道這是真的:我們無法避免錯誤!無論我們多么優(yōu)秀的程序員,我們都會不時地搞砸。因此,問題不在于我們是否犯錯,而在于我們如何有效地處理它們并解決問題?

如果你想了解更多關(guān)于 Git 撤銷工具的信息,我強(qiáng)烈推薦“Git 急救包”。這是一個(免費(fèi)的)簡短視頻合集,向你展示如何在 Git 中清理和撤消錯誤。

祝你開發(fā)順利,勇于嘗試,當(dāng)然也要善于修復(fù)!

關(guān)于使用 Git 撤銷錯誤的常見問題解答 (FAQ)

git resetgit revert 有什么區(qū)別?

git resetgit revert 是兩個幫助你撤消 Git 存儲庫中更改的命令,但它們的工作方式不同。git reset 將你的 HEAD 指針移動到特定的提交。這意味著它實(shí)際上“忘記”了你在重置到的提交之后的所有提交。這是一個破壞性操作,應(yīng)該謹(jǐn)慎使用。另一方面,git revert 創(chuàng)建一個新的提交來撤消特定提交中所做的更改。這是一個安全的操作,因?yàn)樗粫默F(xiàn)有歷史記錄。

如何撤消 git add 操作?

如果你已經(jīng)使用 git add 暫存了更改,并且想要撤消此操作,可以使用 git reset 命令。例如,如果你想要取消暫存特定文件,可以使用命令 git reset <file></file>。如果你想要取消暫存所有更改,可以使用 git reset 而不指定文件。

我可以撤消 git commit 嗎?

是的,你可以使用 git resetgit revert 命令撤消 git commit。git reset 將你的 HEAD 指針移回到你想要撤消的提交之前的提交,有效地擦除不需要的提交。另一方面,git revert 將創(chuàng)建一個新的提交來撤消不需要的提交中所做的更改。

如何撤消特定文件中的更改?

如果你已經(jīng)對特定文件進(jìn)行了更改,并且想要撤消這些更改,可以使用 git checkout 命令。例如,git checkout -- <file></file> 將丟棄指定文件的本地工作目錄中的更改。

git stash 是什么?

git stash 是一個允許你臨時保存你不想立即提交的更改的命令。如果你需要切換到不同的分支,但不想提交當(dāng)前更改,這將非常有用。你可以稍后使用 git stash apply 應(yīng)用暫存的更改。

如何查看我的 Git 歷史記錄?

你可以使用 git log 命令查看你的 Git 歷史記錄。這將向你顯示存儲庫中所有提交的列表,以及它們的提交消息。

我可以撤消 git push 嗎?

是的,你可以撤消 git push,但這比撤消本地更改要復(fù)雜一些。你需要使用帶有 -f--force 選項(xiàng)的 git push 命令來用你的本地存儲庫覆蓋遠(yuǎn)程存儲庫。要小心使用此命令,因?yàn)樗赡軙φ谔幚硗淮鎯斓钠渌藛T造成問題。

如何撤消多個提交?

如果你想要撤消多個提交,可以使用 git reset 命令以及 HEAD~<number></number> 語法。例如,git reset HEAD~3 將你的 HEAD 指針移回到三個提交之前。

軟重置和硬重置有什么區(qū)別?

軟重置將你的 HEAD 指針移動到特定的提交,但不會更改你的工作目錄和暫存區(qū)。這意味著你仍然會看到來自“已忘記”提交的更改作為未提交的更改。另一方面,硬重置將丟棄工作目錄和暫存區(qū)中的所有更改,有效地將你的存儲庫恢復(fù)到指定提交時的狀態(tài)。

硬重置后我可以恢復(fù)提交嗎?

是的,硬重置后可以恢復(fù)提交,但這并不簡單。Git 會在 reflog 中保留所有 ref 更新(例如移動 HEAD 指針)的日志。你可以使用 git reflog 命令找到你想要恢復(fù)的提交,然后使用 git branch 在該提交處創(chuàng)建一個新分支。

以上是用git撤消錯誤的5種方法的詳細(xì)內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

開發(fā)人員的快捷方式到您的Udemy樣平臺 開發(fā)人員的快捷方式到您的Udemy樣平臺 Jun 17, 2025 pm 04:43 PM

在開發(fā)類似于Udemy的學(xué)習(xí)平臺時,重點(diǎn)不僅僅是內(nèi)容質(zhì)量。同樣重要的是如何交付內(nèi)容。這是因?yàn)楝F(xiàn)代教育平臺依賴于媒體,快速且易于消化。

用于購買SSL證書的經(jīng)濟(jì)有效的轉(zhuǎn)售商平臺 用于購買SSL證書的經(jīng)濟(jì)有效的轉(zhuǎn)售商平臺 Jun 25, 2025 am 08:28 AM

在一個在線信任不可談判的世界中,SSL證書對于每個網(wǎng)站都至關(guān)重要。 SSL認(rèn)證的市場規(guī)模在2024年價值56億美元,并且由于電子商務(wù)業(yè)務(wù)的激增而推動了強(qiáng)勁的增長

SaaS的5個最佳支付門戶:您的最終指南 SaaS的5個最佳支付門戶:您的最終指南 Jun 29, 2025 am 08:28 AM

付款網(wǎng)關(guān)是付款過程的關(guān)鍵組成部分,使企業(yè)能夠在線接受付款。它充當(dāng)客戶與商人之間的橋梁,安全地傳輸付款信息并促進(jìn)交易。 為了

新研究聲稱AI比我們更好地'理解”情緒。特別是在情感上充滿電的情況下 新研究聲稱AI比我們更好地'理解”情緒。特別是在情感上充滿電的情況下 Jul 03, 2025 pm 05:48 PM

在我們認(rèn)為人類始終超越機(jī)器的領(lǐng)域的另一個挫折中,研究人員現(xiàn)在建議AI比我們更好地理解情感。研究人員發(fā)現(xiàn)人工智能證明了一個

由于新的Microsoft AI型號 由于新的Microsoft AI型號 Jul 05, 2025 am 12:44 AM

一種新的人工智能(AI)模型已經(jīng)證明了比幾個使用最廣泛使用的全球預(yù)測系統(tǒng)更快,更精確地預(yù)測重大天氣事件的能力。該名為Aurora的模型已接受過培訓(xùn)。

您的設(shè)備喂養(yǎng)AI助手并收集個人數(shù)據(jù),即使他們睡著了。這是如何知道您分享的內(nèi)容。 您的設(shè)備喂養(yǎng)AI助手并收集個人數(shù)據(jù),即使他們睡著了。這是如何知道您分享的內(nèi)容。 Jul 05, 2025 am 01:12 AM

不管喜歡與否,人工智能已成為日常生活的一部分。許多設(shè)備(包括電動剃須刀和牙刷)已成為AI驅(qū)動的“使用機(jī)器學(xué)習(xí)算法來跟蹤一個人的使用方式,Devi的方式

高級AI型號的CO&#8322;回答相同問題時的排放量比更常見的LLM 高級AI型號的CO&#8322;回答相同問題時的排放量比更常見的LLM Jul 06, 2025 am 12:37 AM

根據(jù)最近的一項(xiàng)研究,我們試圖使AI模型的功能越精確,其碳排放量就越大 - 某些提示產(chǎn)生的二氧化碳比其他提示高達(dá)50倍。

See all articles