我已经遇到过几次这个问题,但是我还没有找到答案。抱歉,如果发现是重复的话。
假设我有以下三个提交: 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。
谢谢。
答案 0 :(得分:0)
找到这样的文件后,将在 应用新提交之前离开。 git stash
什么也不做,因为剩下的就是那个未跟踪的文件。
然后可以使用git add file.cpp
,git stash
,git rebase --continue
,git stash pop
,一切都会好的。刚刚在2.18上进行了测试。
答案 1 :(得分:0)
清理未跟踪的文件(例如藏匿或删除)后,您可以:
git apply -3 .git/rebase-apply/patch
git rebase --continue
-3
标志使它回退到3种方式进行合并,就像git rebase
通常会使您的工作树处于冲突解决状态(如果发生任何合并冲突),否则,如果更改完全适用,您应该会继续。