1

私はオープンソースプロジェクトでのマージを研究するための研究に取り組んでいます。

リポジトリ内のマージごとに、ベース(最も近い共通の祖先)、2つのコントリビューター、および結果としてマージされたコミットを見つける必要があります。

git merge-base rev1 rev2最も近い共通の祖先( )と貢献者( )を取得する方法についてはすでに考えていますがgit log --pretty=%P -n 1 <commit>、マージ操作の結果として発生したコミットを特定するのに問題があります。

Gitリポジトリに複数の親を持つすべてのコミットを見つけるにはどうすればよいですか?

4

2 に答える 2

1

これで十分です(ローカルコミットの場合)

 git rev-list --merges

git rev-listマニュアルページには次のように記載されています。

--merges

マージコミットのみを印刷します。これはとまったく同じ--min-parents=2です。

つまり、rev-listにはいくつかの興味深いフィルターがあります。

--min-parents=<number>
--max-parents=<number>

少なくとも(または多くても)その数のコミットがあるコミットのみを表示します。
特に:

  • --max-parents=1と同じです--no-merges
  • --min-parents=2と同じ--mergesです。
  • --max-parents=0すべてのルートコミットを提供し、
  • --min-parents=3すべてのタコが合流します。
于 2013-03-26T13:22:36.083 に答える
0

試す:

git log --merges

--pretty出力を解析するために適切なものを使用します。

于 2013-03-26T13:24:27.083 に答える