使用不需要的未跟踪文件进行重新定位。错误合并

时间:2018-07-25 18:12:18

标签: git merge rebase

我已经遇到过几次这个问题,但是我还没有找到答案。抱歉,如果发现是重复的话。

假设我有以下三个提交: A-B-C (在每个提交中添加了新文件)。

有时我想编辑提交A,所以我rebase -i并将A标记为编辑。不幸的是,我使用Sublime作为编辑器,并且在编辑A时错误地保存了在C中提交的文件之一(例如file.cpp)。完成git status之后,正如预期的那样,存在一个未跟踪的文件。

现在,一旦我对所需的A进行了编辑,我就忘记了未跟踪的文件,而我做了git rebase --continue。到达提交C后,我得到了错误

error: The following untracked working tree files would be overwritten by merge:
file.cpp

这时我该怎么办?我尝试过git stash,然后尝试git rebase --continue,但是现在我得到的是A-B提交而不是A-B-C。

谢谢。

2 个答案:

答案 0 :(得分:0)

找到这样的文件后,将在 应用新提交之前离开。 git stash什么也不做,因为剩下的就是那个未跟踪的文件。

然后可以使用git add file.cppgit stashgit rebase --continuegit stash pop,一切都会好的。刚刚在2.18上进行了测试。

答案 1 :(得分:0)

清理未跟踪的文件(例如藏匿或删除)后,您可以:

git apply -3 .git/rebase-apply/patch
git rebase --continue

-3标志使它回退到3种方式进行合并,就像git rebase通常会使您的工作树处于冲突解决状态(如果发生任何合并冲突),否则,如果更改完全适用,您应该会继续。