여러 분기가있는 자식 저장소가 있습니다.
어떤 브랜치가 이미 마스터 브랜치에 병합되었는지 어떻게 알 수 있습니까?
답변
git branch --merged master
마스터 로 병합 된 분기를 나열합니다
git branch --merged
HEAD 로 병합 된 분기를 나열합니다 (예 : 현재 분기의 팁)
git branch --no-merged
병합되지 않은 분기를 나열합니다
기본적으로 이것은 로컬 브랜치에만 적용됩니다. -a
플래그는 로컬 및 원격 지사, 그리고 모두가 표시됩니다 -r
플래그 쇼에만 원격 지점.
답변
git merge-base
명령을 사용 하여 두 분기 사이의 최신 공통 커밋을 찾을 수 있습니다 . 해당 커밋이 브랜치 헤드와 동일하면 브랜치가 완전히 병합 된 것입니다.
참고
git branch -d
이런 종류의 이미 수행이 지점 삭제를 거부하기 때문에 하지 않은 이미 완전히 통합되어 있습니다.
답변
그래픽 인터페이스 솔루션도 있습니다. 그냥 입력
gitk --all
브랜치가 이미 병합되었는지 아닌지를 쉽게 알 수있는 새로운 리포지토리 창에 전체 리포지토리가 그래픽으로 표시됩니다.
답변
다음과 같은 bash 함수를 사용하고 있습니다. git-is-merged develop feature/new-feature
git-is-merged () {
merge_destination_branch=$1
merge_source_branch=$2
merge_base=$(git merge-base $merge_destination_branch $merge_source_branch)
merge_source_current_commit=$(git rev-parse $merge_source_branch)
if [[ $merge_base = $merge_source_current_commit ]]
then
echo $merge_source_branch is merged into $merge_destination_branch
return 0
else
echo $merge_source_branch is not merged into $merge_destination_branch
return 1
fi
}
답변
사용하십시오 git merge-base <commit> <commit>
.
이 명령은 두 커밋 사이에서 가장 일반적인 공통 조상을 찾습니다. 그리고 공통 조상이 “분기”의 마지막 커밋과 동일하다면 “분기”가 이미 마스터에 병합되었다고 가정 할 수 있습니다.
단계는 다음과 같습니다
- 마스터 브랜치에서 마지막 커밋 해시 찾기
- “분기”에서 마지막 커밋 해시 찾기
- 명령을 실행하십시오
git merge-base <commit-hash-step1> <commit-hash-step2>
. - 3 단계의 출력이 2 단계의 출력과 동일하면 “브랜치”가 이미 마스터로 병합 된 것입니다.
git merge-base https://git-scm.com/docs/git-merge-base 에 대한 자세한 정보 .
답변
원격 브랜치 정리 주제
git branch -r | xargs -t -n 1 git branch -r --contains
여기에는 각 원격 분기와 최신 SHA가 속한 원격 분기가 나열됩니다.
이것은 어느 원격 브랜치가 병합되었지만 삭제되지 않았으며, 병합되지 않았으며 따라서 쇠퇴하는지 식별하는 데 유용합니다.
‘tig'(gitk와 비슷하지만 터미널 기반)를 사용하는 경우 다음을 수행 할 수 있습니다
tig origin/feature/someones-decaying-feature
체크 아웃을하지 않고도 브랜치의 커밋 히스토리를 볼 수 있습니다.
답변
마스터에 병합 된 브랜치를 확인하려면 다음 명령을 사용해야합니다.
git branch <flag[-r/-a/none]> --merged master
마스터로 병합 된 모든 분기 목록git branch <flag[-r/-a/none]> --merged master | wc -l
마스터로 병합 된 모든 분기의 수
플래그는 :
-a
플래그- (모두) 원격 및 로컬 지점 표시-r
플래그- (원격) 원격 지점 만 표시<emptyFlag>
– 현지 지점 만 표시
예를 들어 : git branch -r --merged master
마스터에 병합 된 모든 원격 저장소를 표시합니다.