1

私は、マスター ブランチが開発者ブランチに定期的にマージされるようにする任務を負っています。

弊社の体制はこんな感じです。4 つのリポジトリがあり、それぞれのリポジトリにメインのマスター ブランチがあり、いつでも作業中の約 5 ~ 10 の開発者ブランチがあります。開発者ブランチは 1 日から 3 か月の間アクティブにすることができ、ブランチの名前が重複することはありません。

週に 1 回、マスター ブランチだけでなくすべての開発者ブランチをチェックし、どのブランチがマージされ、どのブランチがマージされていないか、そしてそれらの最後のマージがいつ行われたかを追跡する必要があります。

私は現在、SmartGit を使用してブランチに切り替え、ログを確認するなどしてこれを行っていますが、このプロセスを高速化するか、場合によっては自動化したいと考えています。

これを行うツールはありますか、これを行うために書くことができるバット スクリプトはありますか?

他のgit関連の質問を見ると、いくつかの組み合わせを使用できる可能性が高いことがわかります

git show :/"Merge branch 'master'"

git log --pretty=format

しかし、これを現在の手動の方法よりも迅速かつ簡単にする何かが欠けているに違いありません。

編集:

これまでのところ、非常に有望な回答が寄せられているので、2 つのしわを追加したいと思います。

  1. 両方の方向を追跡する必要があります。開発者ブランチが master からマージされるとき、および master にマージされるとき。
  2. 「プロダクション」と呼ばれる 3 つ目のブランチも監視する必要があります。master を他のブランチと比較する答えは、「production」ブランチをさまざまな名前付き開発者ブランチと比較しても機能しますか?
4

3 に答える 3

0

単純なワークフローの変更の 1 つは、 への--allオプションを使用することgit logです。

これにより、リポジトリ内のすべてのブランチからのログ エントリがログに含まれます。これを必要な他のオプションと組み合わせると、ログのスペランキングが最大 30 (ブランチごとに 1 つ) から 4 (リポジトリごとに 1 つ) に減ります。

必要に応じて、次の他のオプションが役立つ場合があります。

git log --all --graph --decorate

を使う--onelineのが好きな人もいますが、私はそれに夢中ではありません。ビジュアライゼーションはそれがなくても見やすいと思いますが、両方の方法を試してください。

また、 から到達可能であり、 から到達可能ではないgit log master..<branch-name>コミットを表示するを探索することもできます。これは事実上、探しているコミットのリストです。これはおそらく、各ブランチからリストを生成するようにスクリプト化できます。<branch-name>master

この質問から受け入れられた回答は、を使用してスクリプトを介してブランチを反復処理する方法について詳しく説明していますgit for-each-ref

于 2014-01-07T14:14:24.880 に答える
0

これらは役に立ちますか?

# view the branches that have been merged already
git branch --merged

# view the branches that have NOT been merged yet
git branch --no-merged
于 2014-01-07T14:14:32.860 に答える
0

git logあるブランチには存在するが別のブランチには存在しないコミットを一覧表示するために使用できます。例えば、

git log developer..master

どのコミットがマスター ブランチに到達したが、開発者ブランチには到達していないかを示します。

git log master..developer

自然と逆のことをします。これをさまざまな書式設定オプションと組み合わせて、好みに合わせてレポートを作成できます。

master ブランチから開発者ブランチがいつ更新されたかを調べるにgit merge-baseは、両方のブランチに共通する最新のコミットを検索するを使用できます。最新のマージが開発者からマスターへの逆ではなく、開発者からマスターへのマージであった場合、そのようなコミットは開発者ブランチにある可能性があることに注意してください。問題になる。

于 2014-01-07T14:22:07.133 に答える