不知何故,我的主分支和我的起源/主分支分道扬镳了。 我不希望它们发散。

我如何看待这些差异并将其合并?


当前回答

Git重置——soft origin/my_remote_tracking_branch

This way you will not loose your local changes

其他回答

当我基于分支a创建一个分支时遇到了这个问题

git checkout -b a

然后我将分支a的起始流设置为分支B的原点

git branch -u origin/B

然后我得到了上面的错误消息。

对我来说,解决这个问题的一个方法是,

删除分支a 创建一个新的分支b

git checkout -b b origin/B
git pull --rebase origin/master 

是一个在大多数情况下可以帮助您的命令。

编辑:从源/主节点中提取提交,并将您的更改应用于新提取的分支历史记录。

在我的例子中,这里是我所做的导致分歧的消息:我做了git push,但后来做了git commit——amend,以向commit消息中添加一些东西。然后我又做了另一次提交。

所以在我的例子中,这仅仅意味着原点/主节点已经过时了。因为我知道没有其他人在触摸原点/master,修复是微不足道的:git push -f(其中-f表示力)

要查看差异:

我嫉妒他

这将显示两个分支之间的变化或差异。在araxis(我最喜欢的)中,它以文件夹差异样式显示它。显示每个更改的文件。然后,我可以单击一个文件来查看文件中更改的详细信息。

你可能会遇到这种情况,只需要从remote中获取1个历史记录:

$ git pull --depth=1
fatal: refusing to merge unrelated histories
$ git status
Your branch and 'origin/main' have diverged,
and have 1 and 1 different commits each, respectively.

根据上面的回答,会导致两个分支分流到不同的“线”,所以Git认为这是不相关的历史。

---a---b---main
        \      \
          x x x x   diverged, cannot be merged anymore
          \      \
    ---?---?---?---c(origin/main)

最后,简单的解决方案是:git重置-硬的origin/main,如果你不关心本地的变化,否则你将失去所有的工作。

或者尝试git pull——depth=2。