在 Git 中撤銷提交
這篇文章將介紹我們如何在使用 Git 提交時恢復我們不想做的事情。Git 並沒有那麼複雜,我們需要一個大的過程來解決我們的特定問題,但它不僅僅是導致的問題如此之大,以至於需要不同的技術,這取決於我們遇到的問題和我們想要的結果。
Git 的許多方面都很容易理解,但回到我們以前的狀態要容易得多,而且值得讚賞;撤消倉庫中的主要更改更容易。當我們不知道如何使用命令執行時,這是一個有點可怕的時刻。但實際上,執行諸如提交或撤消提交之類的小事出奇地容易。
但是在這種情況下,你將如何撤消不需要的提交,然後提交你的新更改。
假設你進行了一些更改然後提交了更改,為此,有四種方法可以執行此操作:
在 Git 中撤消提交 - 硬重置
如果你有這個,其中 40 是你的 HEAD
,(42) 是我們檔案的狀態。
(42)
38-39-40
↑
Head
並且你想撤消提交 40 並且永遠不想再次看到它並刪除本地修改檔案中的所有更改。
我們將使用以下命令:
git reset --hard HEAD ~ 1
輸出:
(42)
38-39
↑
Head
現在 39 是 HEAD
。因為在上面的例子中,我們使用了 --hard
,現在你的檔案被重置為提交頭時的狀態,即第 39 次提交。
在 Git 中撤消提交 - 重置 Git
讓我們假設最後一次提交 40 沒什麼大不了的,只是有點偏離我們的目標。現在我們想撤消提交但保留我們的更改。從這裡重新開始,以 40 作為我們的 HEAD
:
(42)
38-39-40
↑
Head
我們將使用以下命令,而不是使用 --hard
引數:
git reset HEAD ~ 1
輸出:
(42)
38-39-40
↑
Head
正如我們在這兩種情況下看到的,HEAD
只定義了最新的提交。當我們執行 git reset HEAD~1
時,Git 命令會將 HEAD
指標移回一次提交。但是(除非你使用 --hard
)我們將檔案保持原樣。我們沒有失去任何東西。
在 Git 中撤消提交 - 軟重置 Git
簡單地說,你甚至可以撤消我們的提交,但使用以下命令保留我們的檔案和索引:
git reset --soft HEAD ~ 1
這不僅會將我們的檔案留在那裡;它甚至將我們的索引留在那裡。當我們執行 git status
時,我們會看到索引中的檔案和以前一樣。事實上,我們會在這個命令之後看到,我們可以執行 git commit
,並且會再次執行我們剛剛進行的早期提交。
在 Git 中撤消提交 - 恢復硬重置檔案
假設我們像第一個選項示例中那樣撤消提交,但後來意識到我們需要它。現在,該怎麼辦?
別擔心,還有辦法把它找回來。我們將使用命令 git reflog
並檢視我們移動的(未完成的)提交列表。找到我們銷燬的提交,然後執行以下操作:
git checkout -b BranchName CommitYouDestroyed
我們現在已經恢復了那個提交。在 Git 中,提交在刪除之日起的 90 天內不會刪除,因此我們可以輕鬆地將其作為備份再次恢復到倉庫中。
Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.
LinkedIn