1. ホーム
  2. git

[解決済み] Git でマージコミットの親を取得するにはどうしたらいいですか?

2022-04-28 14:35:41

質問

Gitコマンドの中には、親をリビジョンとするものもあれば git revert ) の親番号として使用します。どうすれば両方の場合の親を取得できますか?

グラフィカルなログコマンドを使用すると、長いツリーをスクロールして2番目の親を探さなければならないことが多いので、使用したくありません。

どのように解決するのですか?

簡単 git log <hash> マージコミットに対して呼び出されたものは、その親のハッシュを省略したものを表示します。

 $ git log -1 395f65d
 commit 395f65d438b13fb1fded88a330dc06c3b0951046
 Merge: 9901923 d28790d
 ...

git は、親をその番号に従って出力します。最初の (左端の) ハッシュが最初の親を表し、以下同様です。

ハッシュだけでいいのなら、同等の2つの選択肢があります。

$ git log --pretty=%P -n 1 <commit>
$ git show -s --pretty=%P <commit>

git rev-list は親のハッシュも表示できますが、最初にコミットのハッシュが表示されます。

$ git rev-list --parents -n 1 <commit>

親を調べる場合は、カラットで直接参照できるように <commit>^1<commit>^2 , 例:

git show <commit>^1

これは一般化されたものです。 th の親を <commit>^n . ですべての親を参照することができます。 <commit>^@ ただし、単一のコミットが必要な場合は、この方法は使えません。nの後に追加のサフィックスを付けることができます。 th の親構文(例えば <commit>^2^ , <commit>^2^@ の後ではできない)。 ^@ ( <commit>^@^ は有効ではありません)。この構文について詳しくは rev-parse のマニュアルページをご覧ください。