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