[解決済み] git log'でファーストコミットを表示するには?
質問
私は長い歴史を持つプロジェクトを持っています。git上の最初のコミットを表示したいのですが。
どうすればいいですか?
どのように解決するのですか?
簡単な答え
git rev-list --max-parents=0 HEAD
<サブ
から
tihoさんのコメント
. として
クリス・ジョンセンからのお知らせ
,
--max-parents
はこの回答が投稿された後に導入されたものです)。
説明
技術的には、ルートコミットは1つ以上存在する可能性があります。これは、以前は独立していた複数の履歴がマージされたときに起こります。これは、あるプロジェクトが サブツリーマージ .
は
git.git
リポジトリには、履歴グラフに 6 つのルートコミット(Linus の最初のコミットがそれぞれひとつずつ。
ギトギト
また、当初は別のツールであったものもあります。
ギットギ
,
ギットウェブ
および
git-p4
). この場合、以下のことがわかります。
e83c516
は、おそらく私たちが関心を寄せているものです。これは最も古いコミットであり、ルートコミットでもあります。
一般的なケースでは、そう単純ではありません。
想像してみてください。
libfoo
はしばらくの間開発され、その履歴は Git リポジトリ (
libfoo.git
). 独立して、"bar" プロジェクトも開発中です (
bar.git
) が、これほど長くはありません。
リブフー
(の中で最も日付の古いコミット)。
libfoo.git
の中で最も古い日付のコミットより前の日付を持っています。
bar.git
). ある時点で、"bar" の開発者は、"bar" に
libfoo
をサブツリーマージでプロジェクトに組み込むことができます。このマージを行う前であれば、「最初の」コミットは
bar.git
(おそらくルートコミットは1つだけだったでしょう)。しかし、マージ後は複数のルートコミットが存在し、最も古いルートコミットは実は
libfoo
bar "ではなく、"bar "です。
このように履歴DAGのすべてのルートコミットを見つけることができます。
git rev-list --max-parents=0 HEAD
ちなみに、もし
--max-parents
がない場合は、こちらも動作します。
git rev-list --parents HEAD | egrep "^[a-f0-9]{40}$"
便利なタグが設置されているのであれば
git name-rev
は、履歴の概要を簡単に把握できるかもしれません。
git rev-list --parents HEAD | egrep "^[a-f0-9]{40}$" | git name-rev --stdin
ボーナス
よく使う?覚えにくいですか?gitのエイリアスを追加して素早くアクセスできるようにしましょう
git config --global alias.first "rev-list --max-parents=0 HEAD"
これで、単純に
git first
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] 既存の、プッシュされていないコミットメッセージを修正するには?
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み] Git で最新のコミットを新しいブランチに移動する
-
[解決済み】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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] あなたのブランチは 'origin/master' より 3 コミット進んでいます。
-
[解決済み】GitHub: クローンには成功したが、チェックアウトに失敗した
-
[解決済み】GitHubで空のブランチを作成する
-
gitコミット発生 ! [リモート拒否] master -> master (pre-receive hook declined) 解決策
-
[解決済み] LFはgitでCRLFに置き換えられます - それは何ですか、そしてそれは重要ですか?[重複]。
-
[解決済み] git が「Pull is not possible because you have unmerged files」と表示するのはなぜですか?
-
[解決済み] GitHubに空のブランチを作成する
-
[解決済み] "would clobber existing tag "を取り除くには?
-
[解決済み] 警告: リモート HEAD は存在しない参照元を参照しているため、チェックアウトできません。
-
[解決済み] 初期コミットを参照するには?