2

我已经合并master到我的bugXY分支中,需要合并一个文件。但是git mergetool失败了(我猜是我的菜鸟错),即使我中止了合并,它也给我留下了一个肮脏的工作目录,但没有处于需要合并的状态。我想重复合并命令,但由于合并留下了一些新文件,我不能。

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

我做了什么:

> 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再次(“将被覆盖,请 [re]move them”)。我怎样才能做到这一点?我想rm path/to/file.php他们每个人都会工作,但他们中有很多......

4

3 回答 3

14

如果您不进行试运行,则显示 git 将清除的文件:

git clean -ndx

真正从工作树中清除所有这些文件:

git clean -fdx
于 2012-06-14T02:46:15.690 回答
8

git merge手册说:

--中止

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

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

于 2012-06-14T14:35:51.160 回答
3

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

如果您在运行 reset 命令之前没有提交文件,那么它们会被 reset 命令清除。您拥有的选项之一是使用 git reset --hard 它将您重置回提供的提交的状态。

希望这对你有帮助。

于 2012-06-14T02:05:10.357 回答