为什么在尝试从上游的 Git 中进行变基或合并时可能会发生冲突?

问题描述 投票:0回答:1

我正在努力确保我的本地存储库和分支与上游保持同步。然而,我是 git 的新手,并且被困住了。我尝试更新我的 git 命令,但在尝试合并或变基时不断遇到合并冲突。我的流程是

获取

git fetch upstream

变基

git rebase upstream/deploy

git push origin deploy

对于项目的每个分支。 我先做了主要的。现在,当我尝试对其他两个分支、部署和解决方案执行相同操作时,我遇到了合并冲突。我隐藏了我的代码,所以当我尝试进行变基时,没有什么不同(

git diff --cached
显示没有差异),但我仍然遇到合并冲突。

git rebase

我引用了另外两个问题来寻求帮助,但无济于事:how-do-i-update-or-sync-a-forked-repository-on-github 为什么 git-rebase-shows-conflicts-in-the-files-i-did-not-modify

我不确定是否应该尝试修复合并冲突,因为它们来自其他开发人员稍后创建的提交。这不会弄乱 git 历史吗?有人可以向我解释我做错了什么吗?

git
1个回答
0
投票

首先,查尔斯·达菲说的是对的;保持最新的方法是合并,而不是变基。当您尝试合并上游更改时,Rebase 简直太疯狂了。

所以只需进入一个分支

somebranch
,从
origin
获取最新信息,然后从
upstream
获取最新信息:

git fetch origin
git switch somebranch
git merge origin/somebranch
git fetch upstream
get merge upstream/somebranch

如果出现合并冲突,请解决它们。现在合并完成了,推送到你的分支:

git push origin @

对您尝试与上游保持同步的每个分支执行此操作。至于为什么会出现合并冲突,这只意味着自上次更新以来,您和上游接触了相同的代码块。

话虽如此,我想补充一点,这似乎是一个非常奇怪的情况。通常,当您分叉时,您不会触及来自上游的“任何”分支;你创建了一个完整的分支并在那里完成你所有的工作。你这样做的原因就是你现在正在经历的原因;上游可能发生任何事情,因此您希望使与上游相关的分支保持原始状态,以便可以干净地更新。天哪,如果你还没有这样做过,那么此时扔掉你的叉子并重新开始可能会更好。

© www.soinside.com 2019 - 2024. All rights reserved.