由于 Git 中不相关的冲突,无法提取原始开发人员

Posted

技术标签:

【中文标题】由于 Git 中不相关的冲突,无法提取原始开发人员【英文标题】:Cannot pull origin dev due to unrelated conflict in Git 【发布时间】:2021-08-01 07:41:12 【问题描述】:

我从 origin 拉出一个分支(比如说 issue-100)进行审查,审查后我切换到本地 dev 分支而不修改这个 issue-100 分支。这个分支有一些冲突,但我没有碰它,只是在从原点拉出 dev 分支后创建了一个新分支。但是,有趣的是,Git 给出了“自动合并失败;修复冲突然后提交结果”。消息。我只是按照以下步骤操作:

git checkout dev
git pull origin dev
--> gives error, then I abort merging in IntelliJ

git branch 
git branch -D issue-100
git checkout dev
git pull origin dev
--> gives error, then I abort merging in IntelliJ

所以,我没有将 issue-100 推送到原点,但它给出了错误。我该如何解决这个问题?

【问题讨论】:

git status 的输出是什么?请把它添加到问题中。 好的...除了需要 git 状态,只是一个问题:您的本地分支和删除 dev 分支是否存在分歧?具体来说,您的本地dev 中是否存在远程dev 中没有的修订? 是的,有些消息表明存在分歧。那么,我应该删除本地开发并从源拉取吗? @Jasmine 请问你为什么要中止合并?看起来您在 dev 分支中有一些在 origin/dev 中不存在的提交,当您拉取时,传入的提交与现有的(本地)提交冲突 你说得对,但我实际上并没有做任何更改,原因是通过拉到我的本地来审查一个分支。因此,我认为删除和拉取 dev 分支会有任何问题,因为我没有推送更新。有什么想法吗? 【参考方案1】:

由于您的本地开发人员和远程开发人员之间存在这种差异,因此出现了冲突。如果本地开发应该和远程开发一样,你应该把分支放在那里:

git checkout dev
git reset --hard origin/dev # before running this, make sure there are no pending changes laying aroind your working tree as they would be lost

现在本地开发和远程开发完全一样(内容和历史)。一切都应该恢复正常了。

我脑子里有个问题,为什么人们应该使用共享远程分支的本地副本,但它比你的问题更广泛,我碰巧持有这样的观点违背常识(我认为人们不应该保留远程共享分支的本地副本,但.....这只是我的观点)。

【讨论】:

这也可以。喜欢git branch -D dev; git checkout -b dev origin/dev 或者:git branch -f dev origin/dev(只要您不在开发人员中就可以使用)。 这听起来很对......唯一的事情是没有必要做第一次结帐创建一个新的分支。您可以通过 git checkout --detach 与开发人员断开 它强制 git 将分支指针 dev(换句话说,分支)移动到 origin/dev 指向的修订版。 他们都很好。只要你理解你正在运行的每一个命令(我的方式,你的方式),就可以了。土豆,土豆。这是 git 的奇迹之一......它在实现相同目标的方式方面非常灵活。

以上是关于由于 Git 中不相关的冲突,无法提取原始开发人员的主要内容,如果未能解决你的问题,请参考以下文章

eclipse svn冲突怎么解决

与故事板合并问题

源代码控制在 Xcode 8 中不起作用

git svn rebase 错过/丢失提交(在 rebase --continue 由于合并冲突)?

git代码流程(提交/合并/冲突处理)

Git冲突解决