28

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

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

これにより履歴が保持され、gitk を使用して、すべてのコミットが入ってくる場所を確認できます。ただし、マスターブランチに適用されたコミットのみを確認できるようにしたいと考えています。私が試してみました:

git log master
git show-branch

これらのいずれも、マスターブランチの履歴だけを示しているわけではありません。これを簡単に行う方法はありますか?

4

3 に答える 3

24

私の理解が正しければ、マスターへのマージを確認したいのですが、それらのマージの履歴は確認したくありません。私は信じている:

git log --merges

あなたが望むものをあなたに与えます。

更新: --first-parent を追加すると、その音からこれを修正する必要があります。

git log --merges --first-parent

--最初の親

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

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

于 2011-01-07T19:26:36.640 に答える
3

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 つのブランチだけ」を意味のあるグラフにすることはできません (両方ともマスターであるため)。

于 2011-01-07T22:06:20.143 に答える