어떤 Git 브랜치가 어떤 원격 / 업스트림 브랜치를 추적하는지 어떻게 알 수 있습니까?

내가 할 수 있다는 것을 알고 git branch --all로컬 및 원격 지점을 모두 보여 주지만 그들 사이의 관계를 보여주는 데 그렇게 유용하지 않습니다.

어떤 지역 지점이 어떤 원격 지점을 추적하는지 보여주는 방식으로 지점을 어떻게 나열합니까?



답변

스크립팅을 위해 원하는 경우 매우 많은 도자기 명령입니다.

git branch -vv   # doubly verbose!

git 1.8.3에서는 업스트림 분기가 파란색 으로 표시됩니다 ( ” git에서 분기 추적 (있는 경우)은 무엇입니까? “참조).


깨끗한 출력을 원하면 arcresu의 답변을 참조하십시오 .이 답변원래이 답변을 작성한 시점에 존재하지 않았다고 생각되는 도자기 명령을 사용하므로 조금 더 간결하고 병합뿐만 아니라 rebase를 위해 구성된 분기와 함께 작동합니다.


답변

git remote show origin

‘원점’을 리모컨의 이름으로 바꾸십시오.


답변

에 대한 매뉴얼 페이지를 보면 git-rev-parse다음 구문이 설명되어 있습니다.

<branchname>@{upstream}예를 들면 master@{upstream},@{u}

@{upstream}branchname 의 접미사 (약식
<branchname>@{u})는 branchname으로 지정된 분기가 빌드되도록 설정된 분기를 나타냅니다. 누락 된 분기 이름은 기본적으로 현재 이름입니다.

따라서 지점의 상류를 찾으려면 master다음을 수행하십시오.

git rev-parse --abbrev-ref master@{upstream}
# => origin/master

각 지점에 대한 정보를 인쇄하려면 다음과 같이 할 수 있습니다.

while read branch; do
  upstream=$(git rev-parse --abbrev-ref $branch@{upstream} 2>/dev/null)
  if [[ $? == 0 ]]; then
    echo $branch tracks $upstream
  else
    echo $branch has no upstream configured
  fi
done < <(git for-each-ref --format='%(refname:short)' refs/heads/*)

# Output:
# master tracks origin/master
# ...

이것은 refs와 config를 수동으로 파싱하는 것보다 깨끗합니다.


답변

kubi의 대답에 대한 대안 .git/config은 로컬 저장소 구성을 보여주는 파일을 보는 것입니다 .

cat .git/config


답변

git for-each-ref --format='%(refname:short) <- %(upstream:short)' refs/heads

각 지역 지점에 대한 라인을 표시합니다. 추적 지점은 다음과 같습니다.

master <- origin/master

추적하지 않는 것은 다음과 같습니다.

test <-


답변

를 들어 현재의 지점, 여기에 두 가지 좋은 선택이 있습니다 :

% git rev-parse --abbrev-ref --symbolic-full-name @{u}
origin/mainline

또는

% git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD)
origin/mainline

그 대답은 또한 여기에 있습니다 . (잘못된) 중복으로 표시된 약간 다른 질문에 대한 것입니다.


답변

현재 지점의 경우 git checkout(아무 지점도 없음) 이라고 말할 수도 있습니다 . 이것은 현재 브랜치에 대한 추적 정보가있는 경우 부작용을 나타내는 no-op입니다.

$ git checkout
Your branch is up-to-date with 'origin/master'.