なぜ私のgitの履歴はクリスマスツリーみたいなのですか?
質問
を行う場合
git log --decorate --oneline --graph
を実行したところ、次のような構造が現れました (祭りのテーマを強調するために回転させています)。
コミットグラフのこのパターンはどのようにして生まれたのでしょうか?
もちろん、これは意図的なもので、少々馬鹿げていますが、ここには興味深い点があります。コミットグラフの特定のパターンを git 履歴ブラウザで見たときに、それをどう解釈すればいいのかがわからないことがよくあります。
どのように解決するのですか?
この事例では、コミットされないコミットが
master
ブランチの先端にプッシュされていないコミットがあったということです。 すると
git pull
は同じリポジトリで何度も実行され、上流で新しい作業がたくさん行われるようになりました。 (この場合、自動化されたスクリプトが原因で発生しましたが、開発者がブランチを最新に保つために、たとえばリベースではなく、ブランチに繰り返しプルする場合にも同じことが起こり得ます)。
上流で新しいコミットがあったときにプルするたびに、新しいマージコミットが作成されます。
master
にないコミットが
master
になかったものです。
やがて、このリポジトリの master ブランチからの履歴が上流にプッシュされたため、他の開発者は次に上流リポジトリからプルしたときに、コミットグラフにこの構造が突然現れるのを見ることになりました。
もし同じような構造の履歴があり、どのコミットや開発者がこの問題を引き起こしたのかを知りたければ、星印のある行を最初の非マージコミットにたどり着くまで(基本的にすべてのマージの最初の親を追って)見ていけばよいのです。 この写真の場合、それは
b275805
- であり、本来ならもっと前にプッシュされているべきコミットです。
これが、人々がしばしば
git pull --rebase
- を使うのが好まれる理由のひとつです。
私の同僚である マシュー・サマーヴィル がこれを発見し、何が起こっているのかを突き止めたのです。
関連
-
Git Bashが致命的に表示される:この操作は作業ツリーで実行する必要がある
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み] git export」(「svn export」のようなもの)を行うか?
-
[解決済み] Git はシンボリックリンクをどのように扱うのですか?
-
[解決済み] Gitの履歴からコミットしたコードをgrep(検索)する方法
-
[解決済み] 履歴のある SVN リポジトリを新しい Git リポジトリに移行するにはどうすればよいですか?
-
[解決済み] Gitでファイルのステージを解除する方法が2つあるのはなぜですか?
-
[解決済み】Gitバージョン管理でファイルの変更履歴を見る
-
[解決済み】Gitでコミットをチェリーピックするというのはどういう意味ですか?
-
[解決済み] チェリーピックのコンフリクトを解決するにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
undefinedGit Git がファイルをコードクラウドにプッシュする際に報告されるエラーを解決します: ! [拒否] master -> master (最初にフェッチ)
-
git pull reports エラー: :cannot open .git/FETCH_HEAD:Permission denied (.git/FETCH_HEADを開くことができません。
-
解決策正しいアクセス権を持っていることと、リポジトリが存在することを確認してください。
-
gitlabの紹介と使い方
-
git reports an error fatal: unable to auto-detect email address (got 'Administrator@MS-20180504MMDH.(none)')
-
[解決済み] 現在のブランチにあるファイルをメインブランチにある同じファイルに上書きしますか?
-
[解決済み] Gitでは、これらの言葉はどのような意味ですか?リポジトリ、フォーク、ブランチ、クローン、トラック?
-
[解決済み] VSCodeからgitの統合を削除する
-
[解決済み] 以前のコミットにファイルを追加するには?
-
[解決済み] 別のユーザーでコードをコミットするにはどうすればよいですか?