Git 使用不需要的未跟踪文件重定基址。错误合并

Git 使用不需要的未跟踪文件重定基址。错误合并,git,merge,rebase,Git,Merge,Rebase,这个问题我已经遇到过好几次了,但我还没有找到答案。如果结果是重复的,就道歉 假设我有以下三个提交: A--B--C (每次提交时都添加了新文件) 在某个时刻,我想编辑提交,所以我rebase-I并将A标记为编辑。不幸的是,我使用Sublime作为编辑器,在编辑A时,我错误地保存了在C中提交的一个文件(比如file.cpp)。在执行git status时,正如预期的那样,现在有一个未跟踪的文件 现在,一旦我对我想要的进行了编辑,我就忘记了未跟踪的文件,我做了git-rebase——继续。到达com

这个问题我已经遇到过好几次了,但我还没有找到答案。如果结果是重复的,就道歉

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

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

现在,一旦我对我想要的进行了编辑,我就忘记了未跟踪的文件,我做了
git-rebase——继续
。到达commit C时,我得到了错误

error: The following untracked working tree files would be overwritten by merge:
file.cpp
现在我该怎么办?我尝试了
git stash
然后是
git-rebase--continue
,但现在我得到的是一个--B提交,而不是一个--B--C


谢谢。

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


然后,您可以
git add file.cpp
git stash
git rebase--继续
git stash pop
,一切都会好起来的。刚刚使用2.18进行了测试。

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


-3
标志使其返回到3路合并,因为
git-rebase
通常会使您的工作树处于冲突解决状态(如果发生任何合并冲突),否则如果更改完全适用,您应该可以继续。

如果此时运行
git-status
,输出应该包括可以运行哪些Git命令来接受文件的任一版本。
git apply -3 .git/rebase-apply/patch
git rebase --continue