在git中解决'两者都添加'的合并冲突?

Jez*_*Jez 129 git merge rebase

我在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
Run Code Online (Sandbox Code Playgroud)

我的问题是,我该如何解决这个问题?我必须使用合并工具还是只能从命令行执行此操作?如果我git rm src/MyFile.cs,git如何知道我要删除哪个文件版本以及我想保留哪个文件?

CB *_*ley 129

如果您使用git rmgit将从索引中删除该路径的所有版本,因此您的解决操作将使您没有任何一个版本.

您可以使用git checkout --ours src/MyFile.cs从要重新定位的分支git checkout --theirs src/MyFile.cs中选择版本,或从要重新定位的分支中选择版本.

如果您想要混合,则需要使用合并工具或手动编辑它.

  • 来自@Tom的答案:当做...时... git checkout --ours someFile`**在执行git状态时,它似乎没有做任何事情.**请记住事后再做.`git add someFile``git status` (16认同)

Ana*_*tib 67

我有时会发现使用--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


Tom*_*Tom 37

什么时候......

git checkout --ours someFile

在执行git状态时,它似乎没有做任何事情.

请记住事后再这样做.

git add someFile
git status
Run Code Online (Sandbox Code Playgroud)