2017-03-01 8 views

答えて

2

git rev-list --parents -n 1 SOME_COMMITは、指定したコミットのSHAを親のSHAに与えます。

+0

+1:これは、マージコミットがいくつあるかを事前に知ることなく、すべての親を得る良い方法です。 '-n 1'の代わりに' --no-walk'を使うのが好きですが、その効果はまったく同じです。 – torek

2

git log --format="%H" -n 1 <commit>~は、ハッシュ(%H)だけを出力し、コミットの親(〜)から出力を1エントリに(すべての祖先を表示する代わりに)制限します。

3

へのコマンド任意の指定子をハッシュIDに変換するコマンドは、git rev-parseです。は「親がコミットのコミットを見つける」を意味

構文はgitrevisionsからである、とあなたが入力することを好む方commit^commit~ -useです。 commitの部分は、ブランチ名、別のコミットハッシュID、特別な名前HEAD、またはこれらの接尾辞付き表現の別のものを含む、ほぼすべての有効なコミット指定子になります。したがって

HEAD^ 

HEADの親であり、そして:

HEAD^^ 

はそうでHEAD^の親である、と。

チルダ構文はそう、実際に多くの帽子サフィックスの圧縮バージョンです:

HEAD~5 

は同じことを意味します。チルダの後に番号が欠落している場合

HEAD^^^^^ 

を、Gitは想定していあなたは1を意味しました。すべてこれが何を意味するのか

、一緒に入れ、ということです:あなたは、実際のハッシュIDを取得します

git rev-parse HEAD^ 

(またはHEAD~)。しかし、普通のGitコマンドでは、代わりにHEAD^またはHEAD~と書くことができます。同様に、1234567が有効な短縮コミットハッシュIDである場合は、1234567^または1234567~1と記述して、親コミットを参照できます。

マージコミットがあるコミットは、その場合には一度にそれぞれの親1を抽出する、またはすべての親を参照するために利用できる多くの構文があり、二つ以上の親を持つ。ここでも、詳細についてはgitrevisionsを参照してください。)

関連する問題