지점이 이미 마스터로 병합되었는지 어떻게 알 수 있습니까? 있습니다. 어떤 브랜치가 이미 마스터 브랜치에 병합되었는지

여러 분기가있는 자식 저장소가 있습니다.

어떤 브랜치가 이미 마스터 브랜치에 병합되었는지 어떻게 알 수 있습니까?



답변

git branch --merged master마스터 로 병합 된 분기를 나열합니다

git branch --mergedHEAD 로 병합 된 분기를 나열합니다 (예 : 현재 분기의 팁)

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>.

이 명령은 두 커밋 사이에서 가장 일반적인 공통 조상을 찾습니다. 그리고 공통 조상이 “분기”의 마지막 커밋과 동일하다면 “분기”가 이미 마스터에 병합되었다고 가정 할 수 있습니다.

단계는 다음과 같습니다

  1. 마스터 브랜치에서 마지막 커밋 해시 찾기
  2. “분기”에서 마지막 커밋 해시 찾기
  3. 명령을 실행하십시오 git merge-base <commit-hash-step1> <commit-hash-step2>.
  4. 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 마스터에 병합 된 모든 원격 저장소를 표시합니다.


이 글은 Git 카테고리에 분류되었고 태그가 있으며 님에 의해 에 작성되었습니다.