2012-06-14 71 views
1

我已將master合併到我的bugXY分支中,並且需要合併文件。但git mergetool失敗(我猜我是noob錯誤),即使我中止了合併,它留下了一個骯髒的工作目錄,但不需要合併狀態。我想重複合併命令,但我不能因爲合併留下一些新文件。git在撤消失敗合併時刪除文件

我該如何撤消合併(我沒有提交任何內容),並從以前得到完全的工作目錄?

我做了什麼:

> git checkout bugXY 
On branch "bugXY" - nothing to commit 
> git merge master 
[modifying and adding lots of files] 
one file with conflict 
On branch "bugXY|MERGING" 
> git mergetool 
You could use a, b or c 
merged // didn't work, no GUI appeared and I did not do anything 
do you want to remove, commit or abort? 
> abort // Hu, what happened? 
On branch "bugXY" // no MERGING any more??? 

哎呀,我做了什麼?重複的git merge不起作用,我已經更改(並暫存)了我的工作目錄中的文件。好的,撤消它。我想:

> git reset --hard HEAD 

> git checkout bugXY 

現在沒有上演任何更多,但我還是有一堆未跟蹤工作樹中的文件妨礙我git merge再次(「將被覆蓋,請[移動]「)。我怎樣才能做到這一點?我想rm path/to/file.php每個人都會工作,但有很多他們...

回答

11

了Git會清除如果顯示的文件沒有做預演:

git clean -ndx 

真的從你的工作樹清除所有這些文件:

git clean -fdx 
+0

運行第二個命令時要小心......或者你的IDE有一個本地歷史記錄功能 – Carlton

2

git reset --hard HEAD 重置索引和工作樹。丟棄在工作樹中跟蹤文件的所有更改。

如果您在運行重置命令之前沒有提交這些文件,那麼它們將被reset命令清除。其中一個選項是使用git reset --hard,它會將您重置爲提供的提交狀態。

希望這對你有幫助。

+0

我已經試過了。但是我之前做過的事情讓他們沒有跟蹤:-( – Bergi

9

git merge手冊說:

--abort

中止當前衝突解決過程,並嘗試重新構建預合併狀態。

所以我想試試git merge --abort重新開始。

+0

我試過了,但它告訴我我沒有更多的合併情況。不管怎麼說,還是要謝謝你 – Bergi