--ontoとりあえずスキップしましょう。 upstreamそしてbranch、かなり基本的なものであり、実際には一種の模倣でcheckoutあり、-2 branch番目の引数はオプションです:
git branch <newbranch>
git branch <newbranch> <base>
git checkout -b <newbranch>
git checkout -b <newbranch> <base>
git rebase <upstream>
git rebase <upstream> <branch>
(別に、これらの引数の名前rebase。、「上流」と「ブランチ」は非常にIMO記述されていない私は、一般的にpeachoftreeのようにそれらを考える、<start>と<end>私はそれらを使用することがありますどのようにしています、: git rebase <start> <end>)
2番目のブランチを省略した場合、結果は、最初にそのブランチをチェックアウトしてから、そのブランチを指定していないかのように実行するのとほぼ同じです。例外はbranch、現在のブランチを変更しないことです。
git checkout <base> && git branch <newbranch> && git checkout <previous_branch>
git checkout <base> && git checkout -b <newbranch>
git checkout <end> && git rebase <start>
rebase呼び出されたときに何が行われるかを理解するために、私は最初にそれを特別なタイプのマージとして考えることから始めました。実際にはそうではありませんが、最初にリベースを理解し始めたときに役立ちました。peachoftreeの例を借りるには:
A--B--F--G master
\
C--D--E feature
このgit merge master結果:
A--B--F-----G master
\ \
C--D--E--H feature
一方、git rebase master(ブランチでfeature!)結果は次のようになります。
A--B--F--G master
\
C'--D'--E' feature
どちらの場合も、とのfeature両方のコードが含まれています。をオンにしていない場合は、2番目の引数を使用してショートカットに切り替えることができます 。上記と同じことを行います。masterfeaturefeaturegit rebase master feature
今、スペシャルのために--onto。これで覚えておくべき重要な部分は、<start>指定されていない場合、デフォルトであるということです。したがって、上記で--onto具体的に指定した場合、これは同じ結果になります。
git rebase --onto master master
git rebase --onto master master feature
(私が--onto指定せずに使用することはありません。<end>なぜなら、すでにオンになってfeatureいる場合、これら2つは同じだと思っていても、精神的に解析する方が簡単だからです。
なぜ--onto役立つかを理解するために、ここに別の例を示します。私がオンfeatureになっていてバグに気付いたとしましょう。それを修正し始めましたfeatureがmaster、誤ってではなく分岐してしまいました。
A--B--F--G master
\
C--D--E feature
\
H--I bugfix
私が望んでいるのは、これらのコミットが「bugfix依存」しないように「移動」することですfeature。現状では、この回答で上記に示したあらゆる種類のマージまたはリベースfeatureは、2 つのコミットとともに3つのコミットを取得しbugfixます。
たとえば、git rebase master bugfix間違っています。たまたまからのすべてのコミットが含まれる範囲<start>には、上で再生されます:<end>featuremaster
A--B--F--G master
\ \
\ C'--D'--E'--H'--I' bugfix
\
C--D--E feature
私たちが実際に望んでいるのは、の上で再生されるからfeatureまでのコミットの範囲bugfixですmaster。それ--ontoが目的です-「開始」ブランチとは異なる「再生」ターゲットを指定します。
git rebase --onto master feature bugfix
A--B--F--G master
\ \
\ H'--I' bugfix
\
C--D--E feature