web-dev-qa-db-ja.com

Gitログに1つのブランチの履歴のみを表示する

私はプロジェクトにGitを使用しており、ベストプラクティスに従おうとしています。

  1. 私はトピックブランチに取り組んでいます
  2. 準備ができたら、git merge --squashを使用してtopic branchdevブランチにマージします。これにより、私のdevブランチがクリーンに保たれます。
  3. devブランチが安定していて、チームがリリースの時期であると判断した場合は常に、devブランチをmasterブランチにマージしますsquashを使用せずに、バージョンリリースとしてコミットするタグを付けます。

これで履歴が保持され、gitkを使用すると、すべてのコミットがどこから来るかを確認できます。ただし、-に適用されたコミットのみのみを確認できるようにしたいです。 マスターブランチ。私が試してみました:

git log master
git show-branch

これらのどれもjustmasterブランチの履歴を示していません。これを簡単に行う方法はありますか?

26
Alex Recarey

私があなたを正しく理解しているなら、あなたはマージをマスターに戻したいのですが、それらのマージの履歴は見たくないでしょう。私は信じている:

git log --merges

あなたが望むものをあなたに与えるでしょう。

更新:-first-parentを追加すると、サウンドからこれを修正する必要があります。

git log --merges --first-parent

-最初の親

Follow only the first parent commit upon seeing a merge commit.

このオプションを使用すると、特定のトピックブランチの展開を表示する際の概要がわかりやすくなります。これは、トピックブランチへのマージは、随時更新されるアップストリームに調整するだけである傾向があり、このオプションを使用すると、に持ち込まれた個々のコミットを無視できるためです。そのようなマージによるあなたの歴史。

23
James Kovacs

残念ながら、Gitはコミットのブランチ情報を保存せず、コミットはブランチに属していません。 Gitのブランチは、コミットの過程で「タグを移動する」だけであり、予想される一連のコミットではありません。

したがって、Gitにはそのような概念がないため、基本的にブランチに属するコミットを表示することはできません。

8
Kostas

Gitは、どのブランチが他のどのブランチから発生したかに関する情報を保存しないため、どのブランチを表示したいかを自動的に推測する方法はありません。

その点で、--first-parentは、特に、たとえば複数のマスターを持つのは簡単なので、最終的には役に立ちません。考えてみましょう:

wc1$ git clone git://shared.com/repo
wc1$ (hack code, git commit)
wc2$ git clone git://shared.com/repo
wc2$ (hack code, git commit, git Push somewhere)
wc1$ git fetch Origin; git merge Origin/master; git Push somewhere master;

(ランダムなプロジェクトを自由に取り、この演習を行ってください。)グラフ化します。したがって、コミットが作成されたブランチの名前でタグ付けされていても、「1つのブランチのみ」を意味のあるグラフにすることはできません(両方がマスターであるため)。

3
user562374