git rebase upstream/master
との間に違いはありgit pull --rebase upstream master
ますか?もしそうなら、何ですか?リモートは、必ずしもアップストリームである必要はなく、任意のリモートにすることができます。
1 に答える
は最初に( )git pull --rebase
をフェッチgit fetch
upstream/master
し、コミットを更新します。
最初に更新せずにリベースしただけupstream/master
では、同じ結果は得られません。
私はそれを「master
ブランチと' origin/master
'が分岐しました、'ブランチを'分割解除する'?」で説明します。
SnakEは、正確にはそうではないコメントで言及しています。「 」は何をするのか
を参照してください。git pull --rebase
git fetch && git rebase origin/master
git pull --rebase
(origin/master)
|
A--B--C (master)
\
B'--D (actual origin/master after changing B and force pushing)
git pull --rebase
この場合、何が行われますか。
git fetch origin
git rebase --onto origin/master B master
ここ:
- origin / masterは新しく更新されたものです
origin/master
(B'
) B
古いものですorigin/master
(フェッチが更新される前)master
上で再生するブランチですorigin/master
git fetch
これは+とは異なりgit rebase origin/master
、コマンドは実際にローカルコミットであり、以前のフェッチでアップストリームからpull --rebase
送信されたコミットを検出しようとします。
origin/master
これを行うために、リモートトラッキングブランチ(この場合は)のreflogを調べます。このreflogは、の連続git fetch
操作のヒントをorigin
「最新の最初の」順序で表しています。reflogエントリごとに(、、、
origin/master@{1}
など...{2}
)、そのコミットが現在のブランチヘッドの祖先であるかどうかを確認しますmaster
。1つが見つかるとすぐに、それをリベースの開始点として選択します(B
上記の例)。