:
A
T /\
i B C
m : :
e D E
\/
| F
V :
git merge-base B E
の第1の共通の子供がどこ2つのコミットの共通の祖先A
見つけることができますして下さい。 2つのブランチが再びマージされるコミットF
を見つける方法はありますか?2つのコミット
:
A
T /\
i B C
m : :
e D E
\/
| F
V :
git merge-base B E
の第1の共通の子供がどこ2つのコミットの共通の祖先A
見つけることができますして下さい。 2つのブランチが再びマージされるコミットF
を見つける方法はありますか?2つのコミット
十分注意深くそれを読まなかった。
コミット内の唯一の情報は、その親(または親)のIDです。親コミットから子に到達することはできません(これはDAGであるリポジトリの指示部分です)。
これ以上見ると、git logのオプション--ancestry-path
のように見えます。指定されたインスタンスの場合: - それはF.
git rev-list --reverse --ancestry-path 28d08e5..006d11d | head -1
であるあなたが、これを逆にして最初のものを狙い撃ち場合
* 85d26ab When compiling vim, also compile & install gvim
* 3146e5d Merge remote-tracking branch 'origin/devel' into deve
|\
| * 28d08e5 rebasing-merge: specify all commits explicitly
* | 006d11d Help 'file' find its magic file
|/
* e68531d (tag: Git-1.7.6-preview20110720) Update submodules
を我々は
git log --oneline --ancestry-path B..E
を使用して、これら2つのコミットのすべての子を得ることができます
私の場合、3146e5dが返されます。
all.awk
this answerからそれぞれのrefの行番号を指定すると、両方の親が遭遇したときに、両者が共通するrefを参照します。
thats素晴らしいグラフ、どうやってそれを作ったのですか? –
"最初の"共通の子が複数ある場合はどうなりますか?例えば、BとEのマージであるコミットがあるかもしれません。 – svick
あなたはこの男のような 'git rev-list --children'出力をハックすることができます:http://stackoverflow.com/questions/1761825/git-of-a-commit-in-gitを参照します。 – ellotheth