鍍金池/ 教程/ Java/ 撤銷提交的更改
創(chuàng)建沖突
暫存更改
創(chuàng)建項目
Git 內(nèi)幕:.git 目錄
撤銷本地更改
移動文件
移除 oops 標(biāo)簽
何為 Origin
再談結(jié)構(gòu)
撤銷暫存的更改
修正提交
別名
檢查狀態(tài)
給版本打標(biāo)簽
撤銷提交的更改
拉下共享的更改
變基
暫存與提交
合并
合并拉下的更改
更改而非文件
更改原始倉庫
重置 master 分支
回顧克隆的倉庫
變基 VS 合并
共享倉庫
導(dǎo)航分支
重置 greet 分支
添加跟蹤的分支
獲得舊版本
克隆倉庫
Git 內(nèi)幕:直接處理 Git 對象
再談設(shè)置
遠(yuǎn)程分支
從分支移除提交
合并回 master
查看分叉的分支
添加遠(yuǎn)程倉庫
拉下更改
歷史
在 master 中更改
裸倉庫
做更改
高級/將來的主題
推送更改
多個倉庫
設(shè)置
提交更改
取得更改
托管你的 Git 倉庫
創(chuàng)建分支
解決沖突

撤銷提交的更改

目的

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

撤銷提交

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

實際上我們將通過創(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(-)

因為我們將撤銷我們做的最后提交,所以我們可以使用 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ù)。

上一篇:歷史下一篇:別名