태그 보관물: branching-and-merging

branching-and-merging

병합되지 않은 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;

답변