master
この場合、リポジトリの1つのクローンのブランチの先端にプッシュされていないコミットがあったという状況でした。次にgit pull
、同じリポジトリで何度も実行されました。その間、アップストリームで多くの新しい作業が行われていました。(この場合、自動化されたスクリプトが原因で発生しましたが、開発者がブランチをリベースするのではなく、最新の状態に保つためにブランチに繰り返しプルする場合にも同じことが起こります。)
master
アップストリームに新しいコミットがあったときのすべてのプルは、アップストリームにないコミットが常にあったため、新しいマージコミットを作成しましたmaster
。
最終的に、このリポジトリのマスターブランチからの履歴がアップストリームにプッシュされたため、他の開発者は、次にアップストリームリポジトリからプルしたときに、コミットグラフにこの構造が突然表示されることを確認しました。
同様の構造の履歴があり、この問題の原因となったコミット/開発者を知りたい場合は、(基本的にすべてのマージの最初の親に続く)星の線を下に見下ろすことができます。最初の非マージコミット。写真の場合、それはb275805
—以前にプッシュされるべきだったコミットです。
これは、人々がしばしば使用することを好む理由の1つです。これによりgit pull --rebase
、プッシュされていない履歴が単純に保たれます。
期限が来ていることを認めるために、私の同僚のMatthew Somervilleがこれを見つけて、何が起こっているのかを解明しました。