もう一つの問題は、言ったgit pullようなものですgit fetch+ git merge。
しかし、git pullVS git fetch+ の違いは何git rebaseですか?
もう一つの問題は、言ったgit pullようなものですgit fetch+ git merge。
しかし、git pullVS git fetch+ の違いは何git rebaseですか?
回答:
それはあなたが実際にちょうど間の差について求めていることを、あなたの質問からかなり明白であるべきgit mergeとgit rebase。
それで、あなたが一般的なケースにいるとしましょう-あなたはあなたのマスターブランチでいくつかの仕事をしました、そしてあなたはオリジンのそれからプルします、そしてそれはまたいくつかの仕事をしました。フェッチ後、次のようになります。
- 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 pullconfigパラメータbranch.<name>.rebaseをtrueに設定することで、マージの代わりにリベースを使用するように特定のブランチを実際に設定できることに注意してください。を使用して、これを1回のプルで行うこともできgit pull --rebaseます。
git pull実行されているようなもので git fetch、その後git merge
git pull --rebaseのようなものですgit fetchその後、git rebase
git pullgit fetch+のようなものgit mergeです。
「デフォルトモードでは、git pullはFETCH_HEAD が
git fetch後に続く 略記ですgit merge」より正確にgit pullはgit fetch、指定されたパラメーターで実行されgit merge、取得されたブランチヘッドを現在のブランチにマージするための呼び出しを行います。
(参照:https : //git-scm.com/docs/git-pull)
「しかし、git pullVS git fetch+ git rebaseの違いは何ですか」
繰り返しますが、同じソースから:
git pull --rebase
「--rebaseを使用すると、git mergeではなくgit rebaseが実行されます。」
「の違いmergeとをrebase」
それもここで答えられます:
https : //git-scm.com/book/en/v2/Git-Branching-Rebasing
(バージョン履歴の記録方法の変更の違い)
git fetch + git rebaseコマンドの動作を本当に理解しています。今から私たちのgitツリーに多少の矛盾はありません:)