我有以下git工作流:
# finish locally committing to feature/new_thing
git push origin feature/new_thing
git checkout develop
git pull # Just in case I get a warning
git merge feature/new_thing
git push origin develop这在99%的情况下有效,但在其他1%的情况下,这种情况会发生:
#Me #Other dev
git push origin feature/new_thing
git merge feature/other_new_thing
git checkout develop
git checkout develop
git pull
git pull
git merge feature/new_thing
git merge feature/other_new_thing
git push origin develop
git push origin develop现在,我的push不出所料地失败了:
error: failed to push some refs to 'git@server.git'让自己重新同步的最简单方法是什么?git reset HEAD~删除我的分支提交,而git pull希望再次合并。我通常会返回到分支机构之前的reset,然后重新登记pull。
必须有一个简单的方法来做到这一点!我确实尝试过使用git-workflow一段时间,但是它经常被卡住,需要更多的手动干预。
发布于 2018-10-01 12:27:13
当您的推送失败时,您知道遥控器必须已更新,因此本地origin/develop副本已过时。在决定如何处理之前,我想知道是什么改变了,所以我通常会跑
$ git fetch首先,我可以查看git log --all --graph --decorate或gitk --all或类似的内容。
如果您决定要在最新的基础上重新设置提交基,则只需使用
$ git pull --rebase如果它不是一个干净的重基,那么您将手动修复它--如果您认为会发生这种情况(或者它已经发生了,并且运行了git rebase --abort),您可能更愿意手动重置并重新进行合并:
$ git reset --hard origin/develop(我倾向于避免使用合并提交,因为我永远记不起哪个父级是哪个)。
发布于 2018-10-01 11:45:06
你有两个一般的选择。
第一种,也是我通常采用的一种方法,是在远程版本的develop之上重新设置您的develop版本。如果存在合并冲突,则可以在进行时解决它们(即,完成后的rebase --continue )。
# On local `develop`
git rebase origin/develop如果在执行过程中发现有太多增量合并冲突,请使用--interactive选项,并对develop上的所有提交进行重新基和预压缩,从develop历史发散的点开始。
另一种选择是将远程版本的develop合并到您的版本中。这将不可避免地创建合并提交,如果您希望保持Git历史尽可能的线性,这可能是不光彩的。
# On local `develop`
git merge origin/develophttps://stackoverflow.com/questions/52586177
复制相似问题