在 Git 中撤消上次提交
在使用 Git 時,我們會遇到各種情況,我們故意想要撤消最後一次提交,因為我們想廣泛地重新提交它,甚至由於我們過去犯的錯誤而將它完全刪除。試想一下,如果 Git 有簡單的 Undo Last Commit
選項,甚至是最流行的鍵盤快捷鍵,會有多少人會使用它。
我們有一個簡單而強大的命令,與上面討論的相同。該命令非常強大,因為它丟棄了最後一次提交併將 HEAD(當前分支)恢復到在該倉庫中進行最後一次提交之前的狀態。對於新的 Git 使用者來說,這可能有點令人困惑,但是一旦我們掌握了它,它對我們的 Git 工具箱來說就會變得如此簡單。
在 Git 中撤消上次提交(長版本)
首先,開啟所需的終端,然後執行 Git status。這將向我們展示我們的倉庫的狀態,包括我們所做的所有提交的列表。大多數時候,它說有三個提交。
第一個是對名為 master
的分支的提交,這是我們當前在倉庫中的分支。第二個是對名為 Dev
的新分支的提交,最後,第三個是對另一個名為 NewDev
的分支的提交。
最後兩個很有趣,因為它們是我們想要撤消的。我們想丟棄我們對 Dev
和 NewDev
所做的提交,並將 HEAD 恢復到提交之前的狀態。讓我們執行下面的命令,看看之後會發生什麼:
$ git reset --hard
HEAD 現在處於之前的狀態。正如我們所看到的,新的 HEAD 指標現在回到了下一次提交。請注意,不再有標記為 Dev
的提交。此外,標記為 NewDev
的提交返回到下一個提交
。
在 Git 中撤消上次提交(短版)
如果我們想撤消最後一次提交,請確保我們位於要撤消提交的分支上,然後執行 git reset –hard。如果我們想撤消當前分支上的最後一次提交,請確保我們在 master
上,然後執行以下命令。
git reset --hard origin/master.
只有當我們完全確定不再需要這些更改時,才能應用上述程式。但反過來說,如果我們需要將這些更改作為工作副本中未提交的本地更改,那麼對於這種情況,reset
命令是我們解決此問題的方法:
$ git reset --soft HEAD~1
reset
會將我們當前的 HEAD 分支撤消到特定點。在我們上面提到的示例中,我們命令返回到最近撤消之前的最後一次提交 - 有利地建立我們最後一次未完成的提交。 --soft
標誌確保恢復未完成的修訂中的更改。
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