Git的。我自己的分支已经分歧,没有变化

时间:2016-10-19 15:11:43

标签: git

有人可以解释可能发生的事情

我把第一次提交推送到服务器。没关系。我创建了第二次提交。在其他bash窗口中,我启动git add -p,但该窗口冻结了,所以我移动到其他窗口并继续git add -pgit commit --amendgit push并且发生了奇怪的事情。顺便说一句。它是第一次推送(不需要-f)

$ git status
On branch feature-1
Your branch and 'origin/feature-1' have diverged,
and have 1 and 1 different commit each, respectively.
  (use "git pull" to merge the remote branch into yours)
nothing to commit, working directory clean

我做了git push

$ git push
 ! [rejected]  feature-1 -> feature-1 (non-fast-forward)
error: failed to push some refs to ...

然后git pull

$ git pull
remote: Counting objects: 136, done.
remote: Compressing objects: 100% (136/136), done.
remote: Total 136 (delta 65), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (136/136), 33.88 KiB | 0 bytes/s, done.
Resolving deltas: 100% (65/65), done.
From github.com:.../...
   444444..444444  other-feature-1 -> origin/other-feature-1
   222222..222222  other-feature-2 -> origin/other-feature-2
 + 333333...333333 other-feature-3 -> origin/other-feature-3  (forced update)
Merge made by the 'recursive' strategy.

然后

$ git status
On branch feature-1
Your branch is ahead of 'origin/feature-1' by 2 commits.
  (use "git push" to publish your local commits)
nothing to commit, working directory clean

为什么会这样?

在服务器上是我需要的所有更改(两个提交都是正确的)。不知道为什么会加速:Your branch is ahead of 'origin/feature-1' by 2 commits.

关于强制更新(其他功能-3)的注意事项:分支的所有者确实强制推送。 我担心的是,如果我没有破坏任何东西。 我怎样才能继续在这个分支上工作?

我正在考虑从服务器(origin / feature-1)分支中删除本地feature-1分支和checkout。

感谢。

1 个答案:

答案 0 :(得分:0)

  • 只有在

    时才会发生这种情况
    • 其他人推送提交到远程

      • 您可以使用rebase origin来保持线性历史记录(不合并)

      • 这是为什么建议在提交之前提取的原因

    • 在修改之前你已经推到了遥控器

      • 在进行修改时,git会破坏先前的提交并使用新计算的Sha1哈希创建新的提交。那是分歧的来源
  • 当你拉出然后git递归合并你的远程分支时,那个第二次提交(带有修改的一个)在原点之前