私の理解、図、結論が正しくなかったため、この回答は修正されました。
git pull
gitがマージしているため、マージコミットが発生します。これは、マージの代わりにリベースを使用するようにブランチを設定することで変更できます。プルでマージの代わりにリベースを使用すると、共有リポジトリにより線形の履歴が提供されます。一方、マージコミットはブランチでの並行開発努力を示しています。
たとえば、2人が同じブランチで作業しています。ブランチは次のように始まります:
...->C1
最初の人が作業を完了してブランチにプッシュします。
...->C1->C2
2人目は作業を終えてプッシュしたいが、更新する必要があるためにプッシュできません。2人目のローカルリポジトリは次のようになります。
...->C1->C3
プルがマージに設定されている場合、2人称リポジトリは次のようになります。
...->C1->C3->M1
\ /
->C2->
ここで、M1はマージコミットです。この新しいブランチ履歴はレポにプッシュされます。代わりに、ローカルリポジトリをリベースするようにプルが設定されている場合は、次のようになります。
...->C1->C2->C3
マージコミットはありません。歴史はより直線的になりました。
どちらの選択もブランチの履歴を反映しています。gitでは、希望する履歴を選択できます。
実際、リベースがリモートブランチに問題を引き起こす可能性のある場所があります。これはそれらのケースの1つではありません。リベースを使用することをお勧めします。これは、すでに複雑なブランチ履歴を簡素化するだけでなく、共有リポジトリに関連する履歴のバージョンを表示するためです。
Branch.autosetuprebase = alwaysを設定して、gitがリモートブランチをマスターではなくリベースとして自動的に確立するようにできます。
git config --global branch.autosetuprebase always
この設定により、gitは各リモートブランチの構成設定を自動的に作成します。
branch.<branchname>.rebase=true
これは、すでにセットアップされているリモートブランチに対して自分で設定できます。
git config branch.<branchname>.rebase true
@LaurensHolstに以前の発言を質問し、追求してくれたことに感謝します。私は確かにgitがプルコミットとマージコミットでどのように機能するかについてさらに学習しました。
マージコミットの詳細については、ProGit-Bookのプロジェクトへの貢献を参照してください。専用の小さなチームのセクションのショーは、コミットをマージします。
git log --no-merges