16. Git 撤銷提交的更改

2018-08-04 14:19 更新

目的

學(xué)習(xí)如何還原已經(jīng)提交到本地倉庫的更改。

撤銷提交

有時候你意識到已經(jīng)提交的更改不正確并想撤銷該提交。有 幾種方式可以處理這種問題,我們在本實(shí)驗(yàn)中所用的方式總 是安全的。

實(shí)際上我們將通過創(chuàng)建新的提交來撤銷原來不想要更改的提 交。

更改文件并提交

更改 hello.rb 文件成下列內(nèi)容:

# This is an unwanted but committed change
name = ARGV.first || "World"

puts "Hello, #{name}!"
$ git add hello.rb
$ git commit -m "Oops, we didn't want this commit"

創(chuàng)建還原提交

要撤銷已提交的更改,我們需要創(chuàng)建一個提交來移除由不想 要的提交所引入的更改。

$ git revert HEAD

這將帶你到編輯器中。你可以編輯默認(rèn)的提交信息,或直接 離開它。保存并關(guān)閉文件。你應(yīng)該看到:

$ git revert HEAD --no-edit
[master a10293f] Revert "Oops, we didn't want this commit"
 1 files changed, 1 insertions(+), 1 deletions(-)

因?yàn)槲覀儗⒊蜂N我們做的最后提交,所以我們可以使用 HEAD 作為還原的參數(shù)。通過簡單的指定哈希值,我們可以撤銷早期 歷史中的任意提交。

注意:命令中的 --no-edit 可被忽略。在不打開編輯器生成輸 出時需要它。

檢查日志

檢查日志來顯示我們倉庫中不想要及還原的提交。

$ git hist
$ git hist
* a10293f 2013-04-13 | Revert "Oops, we didn't want this commit" (HEAD, master) [Jim Weirich]
* 838742c 2013-04-13 | Oops, we didn't want this commit [Jim Weirich]
* 1f7ec5e 2013-04-13 | Added a comment (v1) [Jim Weirich]
* 582495a 2013-04-13 | Added a default value (v1-beta) [Jim Weirich]
* 323e28d 2013-04-13 | Using ARGV [Jim Weirich]
* 9416416 2013-04-13 | First Commit [Jim Weirich]

這種技術(shù)將處理任何提交(雖然你可能必須解決沖突)。在 公開分享的遠(yuǎn)程倉庫上使用分支更加安全。

下一步

接下來,讓我們看看從倉庫歷史中移除最近提交所用的技術(shù)。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號