git如何比较远程分支差异来推送更改

时间:2017-08-31 22:48:10

标签: git github

所以,我有这种情况;

Local&远程存储库有这个图:

A <-- B <-- C <-- E (master)

所以,大师是这样的:

git pull

我在主人身上做git checkout feature git rebase master

其次是:

git status

然后On branch feature Your branch and 'origin/payment-app' have diverged, and have 4 and 3 different commits each, respectively. (use "git pull" to merge the remote branch into yours) nothing to commit, working directory clean 就是这样:

git pull

注意:上面的错误是我从真实场景中得到的原始错误。

所以,我现在的问题是;

  1. 究竟发生了什么导致这种行为?
  2. 我该如何解决这个问题?我尝试了{{1}}但我现在有了重复的提交
  3. 谢谢!

1 个答案:

答案 0 :(得分:1)

如果Git服务器要求他们执行除快进合并之外的任何操作以进行更改,则Git服务器将不接受推送。有两个选项,最适合您主要取决于您的工作流程:rebase和merge

电流

enter image description here

衍合

Rebase将接受您当前的提交并将其重新播放到新的基础上作为一系列新提交,(见下文)原始提交将变为悬空并在大约90天内被垃圾收集(如果您正在使用标准配置选项)

git checkout feature
git rebase origin/feature

使用此方法,每个提交可能会引入需要解决的冲突,但通常这不是问题。如果发生这种情况,请解决冲突,将它们添加到并使用continue命令,有关详细信息,请参阅this article

enter image description here

合并

如果你的工作流允许,如果你有冲突,合并会更容易处理,但它会使历史变得不那么干净(在rebase和merge人群之间几乎存在神圣的战争,所以这里没有意见) 。

git checkout feature
git merge origin/feature

这将创建一个包含两个父项的新提交,即您的版本及其分支版本。

enter image description here

摘要

使用任一方法,您都可以将更改推送到github,因为它可以在到达时执行ff合并。

相关问题