1. 原因
之前 clone 可以一个大型开源项目,自己创建了一个分支进行修改。
随着自己的分支和开源项目自身的迭代,自己每次都使用 merge 将远程的主分支合并到自己分支。最近由于隔了非常多版本没有合并,现在使用 merge 合并出现了大量冲突。
于是使用 git merge -X theirs [other_branch]
进行合并,该命令是在合并遇到冲突时,保留 [other_branch]
的改动,删除自己的改动。
合并过程顺利,但是实际出现了本不应该存在的文件,自己的分支没有创建过该文件,远程最新主分支也没有该文件,猜测可能是远程分支中途 commit 出现过该文件,但是在后续的迭代中又删除了该文件。
由于文件太多,不好一一比较删除,遂另寻他法。
2. 解决办法
先使用 git diff
创建差异文件,具体用法:
|
|
然后使用 git apply
应用差异,具体用法:
|
|
此时基本没太大问题,因为上面使用了 --whitespace=fix
,有些末尾的空行等被删除了,此时再使用 git merge -X theirs [other_branch]
合并一次即可。