私は多くのブランチを持つGitリポジトリを持っていますが、それらのいくつかはすでにマージされており、いくつかはマージされていません。ブランチの数が非常に多いので、どのブランチがまだマージされていないかをどのように判断できますか?「タコ」のマージと、すでにマージされているブランチの再マージを行う必要はありません。
4 に答える
これを試して:
git branch --merged master
缶に書かれていることを行います(にマージされたブランチを一覧表示しますmaster
)。次の方法で逆を引き上げることもできます。
git branch --no-merged master
指定しない場合master
、例えば。
git branch --merged
次に、現在にマージされたブランチが表示されますHEAD
(したがって、をオンmaster
にしている場合は最初のコマンドと同等です。オンをしている場合はとfoo
同等ですgit branch --merged foo
)。
-r
ローカルまたはリモートのフラグとチェック対象の参照を指定して、アップストリームブランチを比較することもできます。
git branch -r --no-merged origin/master
このパラメーターを使用して、-r
マスターにマージされなかったリモートブランチを表示することもできます。
git branch -r --merged master
git branch -r --no-merged
ブランチがすでにマージされている場合、それを再度マージしても何も起こりません。したがって、すでにマージされているブランチの「再マージ」について心配する必要はありません。
あなたの質問に答えるために、あなたは単に発行することができます
git branch --merged
マージされたブランチを表示するには、
git branch --no-merged
マージされていないブランチを表示します。現在のブランチが暗黙指定されていますが、必要に応じて他のブランチを指定できます。
git branch --no-merged integration
まだブランチにマージされていないブランチが表示されますintegration
。
以下のスクリプトはorigin/*
、現在のブランチよりも進んでいるすべてのブランチを検索します
#!/bin/bash
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
echo -e "Current branch: \e[94m$CURRENT_BRANCH\e[0m"
echo ''
git branch -a | grep remotes/origin/ | while read LINE
do
CMD="git diff --shortstat remotes/origin/${CURRENT_BRANCH}...${LINE}"
if $CMD | grep ' file' > /dev/null; then
echo -e "\e[93m$LINE\e[0m" | sed 's/remotes\/origin\///'
$CMD
echo ''
fi
done