Gitでは、フェッチとプルの違いは何ですか?また、マージとリベースの違いは何ですか?質問する

Gitでは、フェッチとプルの違いは何ですか?また、マージとリベースの違いは何ですか?質問する

どうしても理解できません。Web や本をたくさん読んでいるのですが、何かが頭から離れません。誰か次のダミー バージョンを教えていただけませんか。

  • git フェッチとプル
  • git マージとリベース

ベストアンサー1

フェッチとプル

fetchリモート* ブランチからの変更をダウンロードし、リポジトリ データを更新しますが、ローカル* ブランチは変更されません。

pullを実行しfetch、さらにmerge変更をローカル ブランチに反映します。

違いは何ですか? pullプルされたブランチからの変更でローカル ブランチを更新します。A はfetchローカル ブランチを前進させません。

マージとリベース

次の履歴を考慮すると:

          C---D---E ローカル
         /
    A---B---F---G リモコン

merge2 つの開発履歴を結合します。これは、リモート ブランチ上で分岐した後にローカル ブランチで発生した変更を再生し、その結果を新しいコミットに記録することによって行われます。この操作により、各コミットの祖先が保持されます。

の効果は次mergeのようになります。

          C---D---E ローカル
         / \
    A---B---F---G---H リモコン

rebaseローカル ブランチに存在するコミットを取得し、リモート ブランチの上に再適用します。この操作により、ローカル コミットの祖先が書き換えられます。

の効果は次rebaseのようになります。

                  C'--D'--E' ローカル
                 /
    A---B---F---G リモコン

違いは何ですか?A はmergeコミットの祖先を変更しません。A はrebaseローカルコミットの祖先を書き換えます。

*この説明では、現在のブランチがローカルブランチであり、、、、またはの引数として指定されたブランチがリモートブランチであると仮定しています。これfetchは通常のケースです。たとえば、は、pullmergerebasepull指定されたブランチを更新し、リポジトリとmerge変更を現在支店。

おすすめ記事