2011-08-26 16 views
16

私はgit revert -mを実行する必要がありますが、コミットの親がどのように番号付けされているかに関するドキュメントは見つかりませんでした。私が見たすべてのもの(rev-parseのヘルプページを含む)は、両親に番号が付けられているが、どのように番号が付けられているかは分かりません。誰かが私にこれがどこに定義されているのか、どうやってこれを決定するのかを指摘できますか?マージコミットの親の番号付けを調べるにはどうすればよいですか?

答えて

17
git show --format="%P" <SHA> 

は、指定されたコミットの親SHAを番号順に表示します。ほとんどの場合、git revertに指定したいものは1です。

ほとんどのマージの場合、チェックアウトされたブランチのSHAが最初の親になり、マージされたブランチのSHAが2番目になります。 (基本的にチェックアウトされたブランチは常に最初の親ですが、他のペアレントは指定順にマージコマンドに指定されたブランチです)

特定の親のSHAを検索する場合は、

  • まず親:git rev-parse <SHA>^1
  • 第二の親:git rev-parse <SHA>^2

エトセトラキャレットの演算子を使用しています。

+1

良い答えですが、危険性はすべてではなく、「ほとんど」にあります。私はsvnから変換されたgit repoを持っていて、いくつかの 'git-filter-branch'操作が実行されています。そして今や、順序が逆の場合があります。 http:// stackoverflowを参照してください。com/questions/27704438/find-the-right-parent-of-a-merge-non-interactive-wayでのコミット –

-2

コミット番号は実際にはSHA1ハッシュ値です。これにより、検証のための完全な整合性が得られます。

また、ブランチ&のマルチユーザ分散型VCSシステムをマージすることも自然な性質であるため、どのような方法でも実行できないという素晴らしい副作用があります。 HEAD ^やHEAD ^^など、多くのツリーウォークコマンドやコミットを参照する方法があります。

git help revisonsは、すべての異なる構文の完全な説明を示します。

+1

質問は、コミットIDではなく親の番号付けに関するものです。 "最初の親" "2番目の親"( 'HEAD^1 '対' HEAD^2') – ABMagil

+0

@ABMagil元の質問はHEAD ^^ ~~スタイル構文内で数えることを明示的に述べていませんでした。コミットの番号付けについては、正式にsha1です。 HEAD ^スタイルが利用可能であると言って終了しました - 私は 'git help revisons'をソースとして強調しませんでした。 –

5

マージコミットでgit logまたはgit showを実行すると、マージの親のリストが "Merge:"ヘッダーに表示されます。これは左から順にマージの親をリストします。

$ git show 0af53e188a3a8915f65c3b3edaeed3e07d8d3802 
commit 0af53e188a3a8915f65c3b3edaeed3e07d8d3802 
Merge: b81b758 8894d53 
Author: Junio C Hamano <[email protected]> 
Date: Thu Aug 11 11:04:28 2011 -0700 

    Merge branch 'cb/partial-commit-relative-pathspec' 

    * cb/partial-commit-relative-pathspec: 
     commit: allow partial commits with relative paths 

b81b758は最初の親であり、そして8894d53にする第二の親である:最初のものは、第一の親、第一方は第二の親である、等gitリポジトリに例えば

ありますマージコミット0af53e1。マスターに枝fooという、バーやバズをマージし、新しいコミットマージを作成します

[on branch master] 
$ git merge foo bar baz 

コミットが行われたときに、親コミットがコマンドライン上の出現の順序に従って番号付けされています早送りができなかった場合。

結果のマージコミットでは、 "master"が最初の親 "foo" 2番目の "bar" 3rdと "baz" 4番目になります。

関連する問題