[解決済み] 初期コミットを参照するには?
質問
あるリポジトリの最初のコミットを参照する必要があるスクリプトがあります。
HEAD
がありますが、対応する
TAIL
. には何も見当たりません。
git help rev-parse
には、私を助けると思われるようなものは見当たりません。
こんな感じです。
git show TAIL
これは私が持っている一つの選択肢です。
git show `git log --reverse | if read a commit ; then echo $commit ; fi`
これはかなりハチャメチャで、git logの出力が変化しないことに依存しています。
今のところ、私は最初のコミットにタグを付けて、それを私の参照仕様として使っているだけです。 しかし、私は一般的なツールをリリースしたいので、それは良い選択肢ではありません。
どのように解決するのですか?
git-logをスクリプトに使用しない: 以下のいずれかを使用します。
git-rev-list
または
git-log
で、指定されたカスタムフォーマット (
--format=*<sth>*
オプション)を指定します。
あなたの質問にはもう一つ問題があります。 一つ以上の このような TAIL ルートコミット (親なしコミット) がリポジトリに存在することがあります (git.git リポジトリの 'html', 'man', 'todo' などの切断されたブランチは除外してもです)。これは通常、別々のプロジェクトを 1 つにまとめたり、別々に開発されたサブプロジェクトのサブツリー マージを使用した場合に発生するものです。
例えば、git リポジトリには 6 つのルートコミットがあります。git-gui、gitk (サブツリー統合)、gitweb (統合され、もはや個別に開発されていない)、git mail tools (プロジェクトの歴史のごく初期に統合)、そして p4-fast-export (おそらく偶然) です。これは、'html' および 'man' ブランチのルート、あらかじめ生成されたドキュメントを含む "convenience" ブランチ、および TODO リストとスクリプトを含む 'todo' ブランチをカウントしていません。
git 1.7.4.2 以降を使用している場合は、git 1.7.4.2以降を使用する際に
--max-parents
オプションが使えます。
$ git rev-list --max-parents=0 HEAD
そうでない場合は、現在のブランチからアクセスできるすべての親レス(ルート)コミットのリストを取得することができます。
$ git rev-list --parents HEAD | egrep "^[a-f0-9]{40}$"
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] 既存の、プッシュされていないコミットメッセージを修正するには?
-
[解決済み] Git リポジトリを以前のコミットに戻すにはどうすればよいですか?
-
[解決済み] 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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] masterブランチと'origin/master'が分岐している、'undiverge'ブランチの方法は?
-
[解決済み】gitがローカルバージョンをリモートバージョンに置き換える
-
[解決済み】Git Extensions。Win32 エラー 487: cygwinのヒープ用に領域を確保できなかった、Win32エラー0
-
[解決済み】「オリジン/マスターへのプッシュが拒否されました」というエラーが常に発生するのはなぜですか?
-
[解決済み] リモートから<branch name>とマージするように構成が指定されていますが、そのような参照は取得されませんでしたか?
-
[解決済み] このリポジトリで別の git プロセスが実行されているようです。
-
[解決済み] "would clobber existing tag "を取り除くには?
-
[解決済み] VSTS Git Fetch Failed with exit code: 128
-
[解決済み] Git エラー : 'upstream' は git リポジトリでないようです。
-
[解決済み] git log'でファーストコミットを表示するには?