在 Git 中撤銷提交

Abdul Jabbar 2023年1月30日
  1. 在 Git 中撤消提交 - 硬重置
  2. 在 Git 中撤消提交 - 重置 Git
  3. 在 Git 中撤消提交 - 軟重置 Git
  4. 在 Git 中撤消提交 - 恢復硬重置檔案
在 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 Jabbar
Abdul Jabbar avatar Abdul Jabbar avatar

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

相關文章 - Git Undo