我正試圖圍繞git revert
環繞我的頭。我們可以說,一個git還原合併舊的提交頂部的恢復提交?
我從Clearcase背景的,其中以撤銷錯誤提交,你要麼:
- 檢查中就不好了提交的文件頂部的舊版本的文件(只讀文件級別上的承諾Clearcase)
- 刪除提交的元素
- 在版本樹中,將先前版本合併到當前版本中,以創建與最新提交之前相同的新版本。
現在在我的腦海裏,一個git revert是一個自動等價於(3)中的手工工作。
我的問題是:我們可以說git還原合併舊的提交頂部的恢復提交嗎?
我正試圖圍繞git revert
環繞我的頭。我們可以說,一個git還原合併舊的提交頂部的恢復提交?
我從Clearcase背景的,其中以撤銷錯誤提交,你要麼:
現在在我的腦海裏,一個git revert是一個自動等價於(3)中的手工工作。
我的問題是:我們可以說git還原合併舊的提交頂部的恢復提交嗎?
總之
git revert
創建的要撤消提交的倒數。然後,您將新的更改集提交到存儲庫。
見節中2.4 Git Basics - Undoing Things Unmodifying修改的文件。
所以,不,你不能說:
,我們可以說,一個混帳復歸合併上 頂部的回覆提交舊的以前提交?
因爲您可以恢復存儲庫歷史記錄中的任何提交。
例
假設你有這樣的歷史:
C1 <-- C2 <-- C3 (HEAD)
這意味着,如果要恢復提交C2
,你不要犯「老一次提交」這將是C1
。因爲那麼你最終會以
C1 <-- C2 <-- C3 <-- C1 (HEAD)
你不這樣做。你最終
C1 <-- C2 <-- C3 <-- C2' (HEAD)
與C2'
是的C2
倒數,以及C3
仍然你歷史的一部分。
插圖
下面是上述說明中,taken from here的圖示。
不完全。 git revert
將爲您選擇要恢復的每個提交創建一個新的提交對象,並且每個提交對象將與您分別選擇要恢復的每個提交完全相反。
意思是說,如果你git revert C1
,那麼git將創建C1R
,它正好顛倒了C1所做的所有更改。
這是一個非常簡明明確的答案,用最少的話來捕捉問題的本質。 (對不起 - 其他人有圖)。 – hawkeye 2015-03-02 11:56:18
不要忘記那些ClearCase選項是逐個文件。
git revert
通過提交工作(這有點像UCM活動),這意味着它將恢復該提交中引用的所有文件。
對於只恢復特定文件,在「Reset or revert a specific file to a specific revision using Git?」中有其他選項。
謝謝@VonC - 始終感謝您橋接我的clearcase-> GIT知識 – hawkeye 2015-03-02 11:55:40
見http://stackoverflow.com/questions/28166547/what-are-the-differences-between-revert-amend-rollback-and-undo-a-com/28166763#28166763 – Jubobs 2015-03-02 10:28:12