git pull と git fetch + git rebase の違いは何ですか? 質問する

git pull と git fetch + git rebase の違いは何ですか? 質問する

もう一つの質問それは+git pullのようなものだと言います。git fetchgit merge

git pullしかし、とgit fetch+の違いは何でしょうかgit rebase?

ベストアンサー1

git mergeあなたの質問から、あなたが実際に尋ねているのはとの違いだけであることは明らかですgit rebase

では、よくあるケースを想定してみましょう。マスター ブランチで作業を行い、作業が完了した origin からプルします。フェッチ後、次のようになります。

- o - o - o - H - A - B - C (master)
               \
                P - Q - R (origin/master)

この時点でマージすると (git pull のデフォルトの動作)、競合がないと仮定すると、次のようになります。

- o - o - o - H - A - B - C - X (master)
               \             /
                P - Q - R --- (origin/master)

一方、適切なリベースを実行した場合、結果は次のようになります。

- o - o - o - H - P - Q - R - A' - B' - C' (master)
                          |
                          (origin/master)

どちらの場合も、作業ツリーの内容は同じになるはずです。そこに至るまでの異なる履歴を作成しただけですR。リベースは履歴を書き換え、最初にコミットした場所 ( ) ではなく、元の新しいマスター ブランチ ( ) の上にコミットしたように見えますH。他の誰かがすでにマスター ブランチからプルしている場合は、リベース アプローチを使用しないでください。

git pull最後に、 config パラメータを true に設定することで、特定のブランチでマージではなくリベースを使用するように設定できることに注意してくださいbranch.<name>.rebase。 を使用して単一のプルに対してこれを行うこともできますgit pull --rebase

おすすめ記事