撤消失败合并时git删除文件

时间:2012-06-14 00:28:22

标签: git reset git-merge

我已将master合并到我的bugXY分支中,并需要合并文件。但是git mergetool失败了(我的noob错误,我猜),即使我中止了合并,它也给我留下了一个脏工作目录但不需要合并状态。我想重复一下merge命令,但我不能因为合并留下一些新文件。

如何撤消合并(我没有提交任何内容)并从之前获取完整的工作目录?

我做了什么:

> 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都会奏效,但有很多......

3 个答案:

答案 0 :(得分:13)

如果您没有进行干运行,则显示git将清除的文件:

git clean -ndx

真正清除工作树中的所有文件:

git clean -fdx

答案 1 :(得分:9)

git merge手册说:

  

- 中止

     

中止当前的冲突解决过程,并尝试重建合并前的状态。

所以我试着git merge --abort重新开始。

答案 2 :(得分:3)

git reset - hard HEAD 重置索引和工作树。之后对工作树中跟踪文件的任何更改都将被丢弃。

如果在运行reset命令之前未提交文件,则reset命令会清除它们。你有一个选择就是使用git reset --hard,它会把你重置回提供的状态。

希望这对你有所帮助。