74

git log --decorate --oneline --graphクリスマスの直前に私たちのリポジトリの1つで行ったとき、次の構造が現れたことがわかりました(希薄なお祝いのテーマを強調するために回転しました):

gitログ出力を編集し、クリスマスツリーのように回転させました

コミットグラフでこのパターンはどのように発生しましたか?

もちろん、これは意図的にややばかげていますが、ここには興味深い点があります。githistoryブラウザーで特定のパターンを表示したときに、コミットグラフで特定のパターンを解釈する方法を理解するのは難しい場合がよくあります。

4

1 に答える 1

42

masterこの場合、リポジトリの1つのクローンのブランチの先端にプッシュされていないコミットがあったという状況でした。次にgit pull、同じリポジトリで何度も実行されました。その間、アップストリームで多くの新しい作業が行われていました。(この場合、自動化されたスクリプトが原因で発生しましたが、開発者がブランチをリベースするのではなく、最新の状態に保つためにブランチに繰り返しプルする場合にも同じことが起こります。)

masterアップストリームに新しいコミットがあったときのすべてのプルは、アップストリームにないコミットが常にあったため、新しいマージコミットを作成しましたmaster

最終的に、このリポジトリのマスターブランチからの履歴がアップストリームにプッシュされたため、他の開発者は、次にアップストリームリポジトリからプルしたときに、コミットグラフにこの構造が突然表示されることを確認しました。

同様の構造の履歴があり、この問題の原因となったコミット/開発者を知りたい場合は、(基本的にすべてのマージの最初の親に続く)星の線を下に見下ろすことができます。最初の非マージコミット。写真の場合、それはb275805—以前にプッシュされるべきだったコミットです。

これは、人々がしばしば使用することを好む理由の1つです。これによりgit pull --rebase、プッシュされていない履歴が単純に保たれます。

期限が来ていることを認めるために、私の同僚のMatthew Somervilleがこれを見つけて、何が起こっているのかを解明しました。

于 2012-12-24T16:25:16.590 に答える