這是我的要求: 我有a -> b -> c (HEAD)
。 我正在添加一個新的提交d
。現在,它變成a -> b -> c -> d(HEAD)
。git恢復/存儲更改不失其歷史記錄
現在,我想恢復到c
(即,撤消在d
中所做的所有更改)並進行額外更改並形成e
。樹應該看起來像a -> b-> c -> d -> e(HEAD)
。注:我不能失去d
的歷史。我必須回覆它並將新更改添加到e
。
更新: 我可以用一個更好的例子來解釋。假設我有a->b->c(HEAD)
,這裏c
是主要或主要提交。 我試圖用腳本自動化。
第一步:我開始git checkout <SHA1 of c>
,樹是這個樣子:a->b->c(DETACHED HEAD)
我真正的查詢就從這裏開始:
- 我修改幾個文件(我不加任何新文件)並添加一個新的提交
d
。所以樹應該是這樣的:a->b->c->d(HEAD)
- 我運行第一步和修改其他文件(再次,我不添加任何新的文件)恢復在#1改變,並添加一個新的提交
e
。所以樹應該像這樣:a->b->c->d->e(HEAD)
注:提交d
+新變化c
的這裏e
=恢復。我不能盲目地使用git revert HEAD
,因爲c
被認爲是主要承諾。我想我可以使用git stash
和git stash pop
刪除舊的更改並插入新的更改。我可以做類似git checkout stash
的事嗎?
簡而言之:我試圖模糊測試提交c
爲50倍左右(即)提交,並恢復爲50倍
那麼當你做'git恢復HEAD'時會發生什麼? – Makoto
@Makoto:它('git revert HEAD ^')將'c'中的更改恢復爲新的提交。他希望'git恢復HEAD' –
@ChrisDodd:公平點。我通常會把這些混在一起。在我的防守中,我並不經常使用「恢復」...... – Makoto