web-dev-qa-db-ja.com

マージされていないGitブランチを見つけますか?

Gitリポジトリには多くのブランチがあり、そのうちのいくつかはすでにマージされており、一部はマージされていません。ブランチの数が非常に多いので、どのブランチがまだマージされていないかをどのように判断できますか? 「タコ」マージを実行したり、すでにマージされたブランチを再マージしたりする必要はありません。

251
fluca1978

これを試して:

git branch --merged master

ブリキに書かれていることを行います(masterにマージされたブランチをリストします)。以下を使用して逆関数をプルアップすることもできます。

git branch --no-merged master

masterを指定しない場合、たとえば...

git branch --merged

次に、現在のHEADにマージされたブランチが表示されます(したがって、masterを使用している場合は、最初のコマンドと同等です。fooを使用している場合は、git branch --merged fooと同等です)。

-rフラグと、ローカルまたはリモートのチェック対象のrefを指定して、アップストリームブランチを比較することもできます。

git branch -r --no-merged Origin/master
416
Amber

-rパラメーターを使用して、マスターにマージされなかったリモートブランチを表示することもできます。

git branch -r --merged master

git branch -r --no-merged
50
NemoXP

ブランチが既にマージされている場合、再度マージしても何も起こりません。したがって、すでにマージされているブランチを「再マージ」する必要はありません。

あなたの質問に答えるために、あなたは単に発行することができます

 git branch --merged

マージされたブランチを表示するか、

 git branch --no-merged

マージされていないブランチを表示します。現在のブランチが暗示されますが、必要に応じて他のブランチを指定できます。

 git branch --no-merged integration

integrationブランチにまだマージされていないブランチが表示されます。

28
Adam Dymitruk

以下のスクリプトは、現在のブランチよりも先にあるすべての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

スクリプトの最新バージョン

1
moldcraft
Below script will fetch you unmerged branches and write results in .xls file 
#!/usr/bin/env bash
echo "getting list of unmerged_branches from the remote"
file_name=unmerged_branches.xls`enter code here`
current_time=$(date "+%Y.%m.%d-%H.%M.%S")
for branch in `git branch -r --no-merged | grep -v HEAD`;
do echo -e `git show --format="%cd  \\t%cr  \\t%ae" $branch | head -n 1` \\t$branch; 
done | sort -r >> $current_time.$file_name
echo "result is writtein in ";
echo $current_time.$file_name;
0
user3915489