많은 지점이있는 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;