병합되지 않은 Git 브랜치를 찾으십니까? 병합되었지만 일부는

많은 지점이있는 Git 저장소가 있는데 그중 일부는 이미 병합되었지만 일부는 병합되지 않았습니다. 분기 수가 상당히 많기 때문에 아직 병합되지 않은 분기를 어떻게 확인할 수 있습니까? “문어”병합 및 이미 병합 된 분기를 다시 병합하지 않아도됩니다.



답변

이 시도:

git branch --merged master

주석에 표시된 내용을 수행합니다 (에 병합 된 분기를 나열 master). 다음을 사용하여 역을 끌어 올릴 수도 있습니다.

git branch --no-merged master

master예를 들어을 지정하지 않으면

git branch --merged

그런 다음 현재로 병합 된 지점을 보여줍니다 HEAD (on master인 경우 첫 번째 명령과 같고 on foo인 경우와 같습니다 git branch --merged foo).

-r플래그와 확인할 참조를 지정하여 업스트림 분기를 비교할 수도 있습니다 (로컬 또는 원격 일 수 있음).

git branch -r --no-merged origin/master

답변

-r 매개 변수를 사용하여 master로 병합되지 않은 원격 분기를 표시 할 수도 있습니다.

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;