有人可以解释可能发生的事情。
我把第一次提交推送到服务器。没关系。我创建了第二次提交。在其他bash窗口中,我启动git add -p
,但该窗口冻结了,所以我移动到其他窗口并继续git add -p
,git commit --amend
,git 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。
感谢。
答案 0 :(得分:0)
只有在
时才会发生这种情况其他人推送提交到远程
您可以使用rebase origin来保持线性历史记录(不合并)
这是为什么建议在提交之前提取的原因
在修改之前你已经推到了遥控器
当你拉出然后git递归合并你的远程分支时,那个第二次提交(带有修改的一个)在原点之前