2010-01-19 91 views
43

我目前在分支'foo'中。我只跑了git merge master。唯一的問題是我想保留foo中的某個文件。有沒有辦法讓它恢復,但保留合併主人的所有其他更改?git恢復合併期間被刪除的單個文件

+0

'git merge'不會破壞文件,除非它在工作樹中保持不變,並且從另一個分支引入了一個更改。爲了清楚起見,合併是否成功完成,您希望分支中的舊版本,還是合併產生衝突,並且您希望解析版本看起來像您的分支的以前版本? – 2010-01-19 19:56:03

+0

是的,合併成功。我想要舊版本的文件。 – tybro0103 2010-01-19 20:06:04

回答

46

嘗試是這樣的:

git checkout HEAD -- filename 

這將滾你fileback一個承諾。如果您想回溯到特定的提交,您可以使用提交散列或將^ N附加到HEAD關鍵字的末尾,例如, HEAD^2

+3

或者,如果合併尚未完成(由於衝突),只是git checkout文件名。 – paxos1977 2010-01-19 19:55:10

+4

@ceretullis:如果這是由於相關文件中的衝突造成的,您將需要'git checkout --ours filename'。 – 2010-01-19 19:56:52

+0

我其實在其他地方找到了這個地方,但是使用了一個提交散列而不是HEAD^1 ...謝謝! – tybro0103 2010-01-19 20:07:20

0

我不確定如何從當前情況下糾正問題,但您可能要查看git merge -s ours。文檔是here

工作流程將

  1. master
  2. 創建分支a不要在分支a一個習慣的改變,你不會想要合併到master
  3. 退房mastergit merge -s ours a
  4. 檢查出a並繼續工作並提交。

現在,當您與主合併時,步驟2中的自定義更改將被忽略。

+0

不幸的是,這裏的文檔已經不復存在了。 ;) – poige 2012-04-04 02:49:27