답변:
내 Puppet 사본의 예를 사용하여 Github.com의 업스트림 Git 저장소에서 체크 아웃했습니다 ...
$ git remote show origin
* remote origin
Fetch URL: git://github.com/reductivelabs/puppet.git
Push URL: git://github.com/reductivelabs/puppet.git
HEAD branch: master
Remote branches:
0.24.x tracked
0.25.x tracked
2.6.x tracked
master tracked
next tracked
primordial-ooze tracked
reins-on-a-horse tracked
testing tracked
testing-17-march tracked
testing-18-march tracked
testing-2-april tracked
testing-2-april-midday tracked
testing-20-march tracked
testing-21-march tracked
testing-24-march tracked
testing-26-march tracked
testing-29-march tracked
testing-31-march tracked
testing-5-april tracked
testing-9-april tracked
testing4268 tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (up to date)
그런 다음 내가 다음을 실행한다면 :
$ git checkout -b local_2.6 -t origin/2.6.x
Branch local_2.6 set up to track remote branch 2.6.x from origin.
Switched to a new branch 'local_2.6'
마지막으로 git remote show origin
명령을 다시 실행 하면 하단 근처에 다음이 표시됩니다.
Local branches configured for 'git pull':
local_2.6 merges with remote 2.6.x
master merges with remote master
git fetch
하거나 git pull
원격 브랜치에 대한 업데이트가 복제 된 저장소에서 추적된다는 점에서 추적됩니다. 로컬 브랜치는 단지 원격 브랜치의 로컬 브랜치이므로 원격 브랜치에 대한 업데이트가 추적되고 적절한 명령이 제공 될 때 병합됩니다. 로컬 브랜치를 만들 때 '-t'옵션을 명시 적으로 포함하여 원래 브랜치를 추적합니다. 로컬 지점도 다른 로컬 지점을 추적 할 수 있으므로 원격 지점 일 필요는 없습니다.
git remote show remote-name
을 참조 "추적 가지" (원격 저장소에서 브랜치의 스냅 샷을). "합치기"라인은 "업스트림 브랜치" 구성 ( git 브랜치 또는 git 체크 아웃 의 --track
/ -t
옵션으로 만들어져 종종 "추적 브랜치"와 혼동 됨)을 갖는 로컬 브랜치를 나타 냅니다.
모든 지점 :
git branch -avv
현지 지점 만 해당 :
git branch -lvv
원격 지점에만 해당 :
git branch -rvv
업스트림 지점의 이름뿐만 아니라 모든 지점을 보여줍니다.
git branch -lvv
업스트림이있는 로컬 브랜치 만 유용 할 수 있습니다.
git branch -vv
나를 위해 일한다…
Jeremy Bouse 는 추적 정보를 표시 하는 방법을 git remote show
보여줍니다 . 사람이 섭취 할 수있는 정보 만 원한다면 충분합니다.
자동화 된 컨텍스트 (예 : 스크립트)에서 정보를 사용하려는 경우 git for-each-ref
대신 하위 레벨 ( "배관")을 사용해야합니다 .
% git remote show origin
* remote origin
⋮
Local branches configured for 'git pull':
master merges with remote master
pu merges with remote pu
⋮
% git for-each-ref --format='%(refname:short) <- %(upstream:short)' refs/heads
master <- origin/master
pu <- origin/pu
은 git for-each-ref
학습 %(upstream)
에 토큰을 힘내 1.6.3 . 이전 버전의 Git에서는 git config branch.<name>.remote
및로 추적 정보를 추출해야합니다 git config branch.<name>.merge
( git for-each-ref
각각의 로컬 브랜치 이름에 대한 명령을 빌드하는 데 사용 ).
git for-each-ref --format=$'\n'' '' '' '' '' '' ''/%(refname:short);%(upstream:short)' refs/heads | tr ';' $'\n'
특정 지점의 경우, 사용할 수 있습니다 git rev-parse
으로 @{u}
또는 @{upstream}
지점 이름, 예에 접미사 :
$ git rev-parse --symbolic-full-name master@{u}
refs/remotes/github-mhl/master
... 또는 약식 양식의 경우 추가 --abbrev-ref
$ git rev-parse --symbolic-full-name --abbrev-ref master@{u}
github-mhl/master
일반적으로 branch@{upstream}
커밋이 필요할 때마다 구문을 사용할 수 있습니다 .
git rev-parse --symbolic-full-name HEAD
vs. git rev-parse --symbolic-full-name HEAD@{u}
, 감사합니다!
다음 셸 스크립트 ( git-tracks
)를 사용하여 현재 분기에서 추적하는 원격 분기를 표시합니다.
#!/bin/sh -e
branch=$(git symbolic-ref HEAD)
branch=${branch##refs/heads/}
remote=$(git config "branch.${branch}.remote")
remoteBranch=$(git config "branch.${branch}.merge")
remoteBranch=${remoteBranch##refs/heads/}
echo "${remote:?}/${remoteBranch:?}"
이것은 언급 된을 사용할 수도 git for-each-ref
있지만 직접 액세스는 현재 분기의 출력을 필터링하는 것보다 다소 간단하다는 것을 알았습니다.
set -e
있지만 일반적으로 명시적인 검사를 고수합니다. 그러나이 경우에는 정말 좋습니다.
git version 1.9.4
.
.git/config
파일은 추적 지점 정보를 다음과 같이 제공합니다.
[remote "Hub"]
url = ssh://xxxx/tmp/Hub
fetch = +refs/heads/*:refs/remotes/Hub/*
[branch "develop"]
remote = Hub
merge = refs/heads/develop
[branch "Dev1"]
remote = Test
merge = refs/heads/Dev1
[remote "Test"]
url = ssh://xxxx/tmp/gittesting/Dev1GIT
fetch = +refs/heads/*:refs/remotes/Test/*