Git分支与rebase

时间:2014-07-08 05:24:51

标签: git github git-branch

这就是我通常在工作中所做的事情:

git checkout -b my_branch
git commit -m 'fixed something #8852'
git rebase -i master
git push origin my_branch

过了一段时间后,我需要再次在同一个分支上工作。从那时起,新的提交出现在master分支上。我查看了我的分支机构,进行了更改,提交了并且做了#git rebase -i master'。但是当我尝试做git push origin my_branch'它给了我一个错误:

! [rejected]        my_branch -> my_branch (non-fast-forward)
error: failed to push some refs to 'https://github.com/XXX.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

我的主人是最新的。所以从my_branch我做了

git pull --rebase origin my_branch
git push origin my_branch

我认为它改变了对我的分支的所有新提交。现在my_branch我承诺不属于它。注意:我的团队负责人让我总是做一些改进以避免合并。我应该如何解决这个错误,以便my_branch只包含我的提交?

2 个答案:

答案 0 :(得分:0)

当你上大师时,git checkout -b my_branch你就是那时的最新动态。

稍后,在你的分支上做一些工作后,你会想要从master更新这些东西,所以你做git pull master这没关系。

一旦你做得好并且一切正常,那么你通常会进行代码审查,并获得批准。

如果是政策,经理可以在主人身上并执行git rebase my_branch

因此,问题出现在双方的重新定位和重新排序历史中。

答案 1 :(得分:0)

错误的含义是您的远程分支(在树中)比本地分支更高级。当您进行协作和变基时,这往往会发生。如果您遵循的方法需要与其他人分支机构协作,则建议您合并。如果你做一个快速的谷歌搜索,你会发现许多好的git教程,可以帮助你改善这个!

现在,为了解决您的问题,几乎没有解决方案。我认为最好的是:

  • git log并写下您想要的提交的哈希值(您可以将它们复制并粘贴到某处)
  • 转到安全起点并创建新分支(git checkout -b branch_name
  • Cherry-选择你想要拥有的提交到新分支(git cherry-pick commit-hash),如果它们是很多提交,你可以用旧分支进行交互式rebase,只需选择你想要的提交。 / LI>
  • 对您的新分支感到满意,该分支拥有您想要的所有信息,而不是其他内容。