什么是"我们的"和"他们的"在做git rebase时

时间:2017-12-13 12:17:05

标签: git version-control rebase

我已经应用了以下命令,但在做rebase时几乎没有什么困惑 - 以下命令中我们和他们的命令是什么

git checkout app/dashboard-sprint-5
git rebase app/demandware

我知道当前分支是app/dashboard-sprint-5,当我应用rebase时。

app/dashboard-sprint-5将应用于app/demandware的顶部。

就分支而言,ourstheirs是什么。

我检查过link但不满意

2 个答案:

答案 0 :(得分:3)

简单地说,当我们谈论rebase时,我们的'指基础分支。

所以在你的情况下'我们的'将是app / demandware',因为首先git将我们移动到那里,然后应用来自' app / dashboard-sprint-5'的更改,这将是'他们的' 39;

例如,这里有documentation关于rebase和'我们'的说明。字:

  

因为git rebase从< upstream>顶部的工作分支重放每个提交。使用给定策略的分支,使用我们的策略只是丢弃< branch>中的所有补丁,这没什么意义。

答案 1 :(得分:2)

为了轻松记住我们的他们的的方向,可以考虑将重新定基视为将当前分支的每次提交都精选到目标分支中。

Before rebasing:
    A--B--C (master)
       '--D--E (devel, HEAD)

Reset HEAD to master:
    A--B--C (master, HEAD)
       '--D--E (devel)

Cherry-pick D, E.
    A--B--C (master)
       |  '-- D'--E' (HEAD)
       '--D--E (devel)
HEAD becomes "ours" and the old devel branch "theirs".
              ^^^^                            ^^^^^^

On success, repoint devel to E':
    A--B--C (master)
          '--D'--E' (devel, HEAD)

在没有冲突的非交互基础中,我们似乎从旧的分支历史直接跳到了重新建立的分支历史。在这种情况下,我们的他们的的倒置并不明显,从而导致潜在的混乱,尤其是在合并冲突解决期间–分支确实有点出乎意料我们开始时可能会被合并工具突然称为“远程分支”。


尽管已经回答了这个问题,但我添加了更直观的解释,因为我发现如果没有它,很难记住结果。