我正在 git 中进行变基,我遇到的一个冲突是“都添加了”——也就是说,在我的分支和我正在变基的分支中独立添加了完全相同的文件名。
git status
告诉我:
# Unmerged paths:
# (use "git reset HEAD <file>..." to unstage)
# (use "git add/rm <file>..." as appropriate to mark resolution)
#
# both added: src/MyFile.cs
通过合并工具或命令行解决此问题的选项有哪些?
如果我要使用
git rm src/MyFile.cs
,它如何知道我想要删除或保留哪个文件版本?
如果您使用
git rm
git 将从索引中删除该路径的所有版本,因此您的解析操作将使您没有任何版本。
您可以使用
git checkout --ours src/MyFile.cs
从要变基的分支中选择版本,或使用 git checkout --theirs src/MyFile.cs
从要变基的分支中选择版本。
如果您想要混合,则需要使用合并工具或手动编辑。
我有时发现使用
--theirs
和 --ours
选项来识别文件的来源会令人困惑。大多数时候我的分支会在我正在变基的分支中,由 --theirs
! 引用
您还可以使用
git checkout <tree-ish> -- src/MyFile.cs
其中
<tree-ish>
可以替换为包含您要保留的文件的分支名称或提交 ID。
git checkout 6a363d8 -- src/MyFile.cs
git checkout my_branch -- src/MyFile.cs
git checkout HEAD -- src/MyFile.cs
在做...时
git checkout --ours someFile
Git 此时无法识别此类状态更改,无法推送到拉取请求,并且似乎没有执行任何操作。要解决此问题,也请随后执行此操作:
git add someFile
git status
git push