我已将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
都会奏效,但有很多......
答案 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,它会把你重置回提供的状态。
希望这对你有所帮助。