로컬 브런치가 추적하고 있는 리모트브런치를 특정합니다.
다음 항목도 참조하십시오.
어떤 Git 브런치가 어떤 리모트/업스트림 브런치를 추적하고 있는지 어떻게 알 수 있습니까?
로컬 브런치가 추적하고 있는 리모트브런치를 확인하려면 어떻게 해야 하나요?
요?git config
력이나명 령령용? 용용? ????
다음은 모든 추적 브랜치('pull'용으로 구성됨)를 제공하는 명령입니다. 다음을 참조하십시오.
$ git branch -vv
main aaf02f0 [main/master: ahead 25] Some other commit
* master add0a03 [jdsumsion/master] Some commit
SHA 및 긴 포장의 커밋 메시지를 훑어보아야 하지만, 빠르게 입력할 수 있고 추적 브랜치가 세 번째 열에 세로로 정렬됩니다.
에 대한 은 'pull'에서 다른 하십시오.git remote show origin
.
갱신하다
1.부터는 git 1.8.5로 할 수 .git status
★★★★★★★★★★★★★★★★★」git status -sb
두 가지 선택지가 있습니다.
% 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 branch -av
는 어떤 브런치를 가지고 있고 어떤 브런치를 커밋하고 있는지만 알려주기 때문에 로컬브런치가 추적하고 있는 리모트브런치를 유추할 수 있습니다.
git remote show origin
는 어떤 브런치가 어떤 리모트브런치를 트래킹하고 있는지를 명시적으로 나타냅니다.단일 및 입니다.abranch
:
$ git branch -av
* abranch d875bf4 initial commit
master d875bf4 initial commit
remotes/origin/HEAD -> origin/master
remotes/origin/abranch d875bf4 initial commit
remotes/origin/master d875bf4 initial commit
대
$ git remote show origin
* remote origin
Fetch URL: /home/ageorge/tmp/d/../exrepo/
Push URL: /home/ageorge/tmp/d/../exrepo/
HEAD branch (remote HEAD is ambiguous, may be one of the following):
abranch
master
Remote branches:
abranch tracked
master tracked
Local branches configured for 'git pull':
abranch merges with remote abranch
master merges with remote master
Local refs configured for 'git push':
abranch pushes to abranch (up to date)
master pushes to master (up to date)
업데이트: 이 글을 올린 지 몇 년이 지났습니다!HEAD를 업스트림과 비교하기 위해 현재 사용하고 있는 것은@{u}
이는 업스트림트래킹브런치의 HEAD를 나타내는 숏컷입니다(https://git-scm.com/docs/gitrevisions#gitrevisions-emltbranchnamegtupstreamemegemmasterupstreamememuem 참조).
원답:나도 이 문제에 부딪힌 적이 있다.단일 저장소에서 여러 개의 리모컨을 사용하는 경우가 많은데, 현재 지점이 어떤 리모컨을 추적하고 있는지 잊어버리기 쉽습니다.또, 예를 들면, 로컬 커밋을 참조하고 싶은 경우 등, 알기 쉬운 경우가 있습니다.git log remotename/branchname..HEAD
.
이 모든 것은 git config 변수에 저장되지만 git config 출력을 해석할 필요는 없습니다.git config에 이어서 변수 이름을 호출하면 해당 변수 값만 출력되므로 구문 분석이 필요하지 않습니다.이 점에 유의하여 현재 지점의 추적 설정에 대한 정보를 얻기 위한 몇 가지 명령을 다음에 제시합니다.
LOCAL_BRANCH=`git name-rev --name-only HEAD`
TRACKING_BRANCH=`git config branch.$LOCAL_BRANCH.merge`
TRACKING_REMOTE=`git config branch.$LOCAL_BRANCH.remote`
REMOTE_URL=`git config remote.$TRACKING_REMOTE.url`
제 경우 현재 사용하고 있는 리모컨의 이름만 알고 싶기 때문에 다음과 같이 합니다.
git config branch.`git name-rev --name-only HEAD`.remote
로컬 지점과 그 리모트.
git branch -vv
모든 브랜치 및 추적 리모트
git branch -a -vv
로컬 브런치가 푸시 앤 풀용으로 명시적으로 설정되어 있는 장소를 참조해 주세요.
git remote show {remote_name}
git branch -vv | grep 'BRANCH_NAME'
git branch -vv
이됩니다. : 이이 : : : . . 。
grep 'BRANCH_NAME'
: 브런치목록에서 현재 브런치를 필터링합니다.
현재 브랜치가 표시됩니다.
$ git branch -vv
현재 브랜치만 표시됩니다.
$ git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD)
예를 들어 다음과 같습니다.
myremote/mybranch
현재 사용하고 있는 브랜치가 사용하고 있는 리모트의 URL을 확인할 수 있습니다.
$ git remote get-url $(git for-each-ref --format='%(upstream:short)' $(git symbolic-ref -q HEAD)|cut -d/ -f1)
예를 들어 다음과 같습니다.
https://github.com/someone/somerepo.git
하시면 됩니다.git checkout
".", "지점 확인", "지점 확인", "지점 확인이는 현재 브랜치에 대한 추적 정보가 있는 경우 이를 표시하기 위한 부작용과 함께 no-op입니다.
$ git checkout
Your branch is up-to-date with 'origin/master'.
이것이 git config의 출력을 해석하는 것으로 간주되는지는 모르겠지만 마스터가 추적하는 리모트의 URL을 결정합니다.
$git config 리모트$(예: config branch.master.remote).url
또 다른 방법
git status -b --porcelain
이것으로 알 수 있습니다.
## BRANCH(...REMOTE)
modified and untracked files
git-status parsis(머신 어댑터) v2 출력은 다음과 같습니다.
$ git status -b --porcelain=v2
# branch.oid d0de00da833720abb1cefe7356493d773140b460
# branch.head the-branch-name
# branch.upstream gitlab/the-branch-name
# branch.ab +2 -2
또한 브런치를 업스트림으로만 가져오려면 다음 절차를 따릅니다.
$ git status -b --porcelain=v2 | grep -m 1 "^# branch.upstream " | cut -d " " -f 3-
gitlab/the-branch-name
업스트림이 는 빈가 나서 「」가 됩니다).set -o pipefail
를 참조해 주세요.
또 하나의 간단한 방법은
cat .git/config
로컬 브랜치에 대한 세부 정보가 나열됩니다.
다른 방법(고맙습니다)은 존재 여부만 알고 싶은 경우 다음과 같습니다.
if git rev-parse @{u} > /dev/null 2>&1
then
printf "has an upstream\n"
else
printf "has no upstream\n"
fi
git branch -r -vv
리모트를 포함한 모든 브랜치가 표시됩니다.
사용하지 않고 현재 지점 정보만 표시grep
:
git branch -vv --contains
줄임말:
git branch -vv --contains HEAD
현재 HEAD의 커밋 ID가 다른 브랜치에 있는 경우 해당 브랜치도 표시됩니다.
다음과 같이 시험해 볼 수 있습니다.
git remote show origin | grep "branch_name"
branch_name
가 있다.
로컬 브런치와 리모트브런치를 모두 표시합니다.
$ git branch -ra
출력:
feature/feature1
feature/feature2
hotfix/hotfix1
* master
remotes/origin/HEAD -> origin/master
remotes/origin/develop
remotes/origin/master
(사용하고 있는 브런치뿐만 아니라) 임의의 브런치의 업스트림을 검색하는 경우는, @cdunn2001 의 응답에 약간의 변경을 가합니다.
git rev-parse --abbrev-ref --symbolic-full-name YOUR_LOCAL_BRANCH_NAME@{upstream}
로컬 브랜치의 리모트브런치명을 지정합니다.YOUR_LOCAL_BRANCH_NAME
.
여기의 모든 솔루션을 사용해 본 결과, 어느 쪽도 모든 상황에 적합하지 않다는 것을 깨달았습니다.
- 로컬 브랜치에서의 작업
- 분리된 나뭇가지에서 작업하다
- CI로 동작하다
이 명령어는 모든 이름을 가져옵니다.
git branch -a --contains HEAD --list --format='%(refname:short)'
& Ref 를 해, ref 를 「라고 하는 단어를 되지 않는 는, 「HEAD & Master Ref」가비 HEAD 를 합니다.그리고 그것이 발견되지 않으면 첫 번째 비 HEAD ref를 사용합니다./
또는(
그 안에 있어요.
이 답변에 대한 개선으로 다음과 같은 생각을 하게 되었습니다..gitconfig
에일리어스:
branch-name = "symbolic-ref --short HEAD"
branch-remote-fetch = !"branch=$(git branch-name) && git config branch.\"$branch\".remote || echo origin #"
branch-remote-push = !"branch=$(git branch-name) && git config branch.\"$branch\".pushRemote || git config remote.pushDefault || git branch-remote-fetch #"
branch-url-fetch = !"remote=$(git branch-remote-fetch) && git remote get-url \"$remote\" #" # cognizant of insteadOf
branch-url-push = !"remote=$(git branch-remote-push ) && git remote get-url --push \"$remote\" #" # cognizant of pushInsteadOf
나는 이 가명을 쓴다.
git config --global alias.track '!sh -c "
if [ \$# -eq 2 ]
then
echo \"Setting tracking for branch \" \$1 \" -> \" \$2;
git branch --set-upstream \$1 \$2;
else
git for-each-ref --format=\"local: %(refname:short) <--sync--> remote: %(upstream:short)\" refs/heads && echo --URLs && git remote -v;
fi
" -'
그리고나서
git track
이 스크립트는 트래킹 설정에도 사용할 수 있습니다.
https://github.com/orefalo/bash-profiles에서 더 좋은 별칭을 찾을 수 있습니다.
다음 명령어는 원격 송신원 전류 포크가 참조하는
git 리모트 -v
리모트 패스를 추가하려면
git 원격 추가 오리진 경로 이름
그래들 사용하시는 분들은
def gitHash = new ByteArrayOutputStream()
project.exec {
commandLine 'git', 'rev-parse', '--short', 'HEAD'
standardOutput = gitHash
}
def gitBranch = new ByteArrayOutputStream()
project.exec {
def gitCmd = "git symbolic-ref --short -q HEAD || git branch -rq --contains "+getGitHash()+" | sed -e '2,\$d' -e 's/\\(.*\\)\\/\\(.*\\)\$/\\2/' || echo 'master'"
commandLine "bash", "-c", "${gitCmd}"
standardOutput = gitBranch
}
git branch -vv | grep 'hardcode-branch-name'
# "git rev-parse --abbrev-ref head" will get your current branch name
# $(git rev-parse --abbrev-ref head) save it as string
# find the tracking branch by grep filtering the current branch
git branch -vv | grep $(git rev-parse --abbrev-ref head)
Git 위(또는 옆면)의 초경량 래퍼로서 EasyGit(예를 들어 EasyGit)를 사용하고 있습니다.EasyGit에는 "info" 서브 명령어가 있어 현재 지점 원격 추적 분기를 비롯한 모든 종류의 매우 유용한 정보를 제공합니다.예를 들어, 현재의 브랜치명은 「foo」입니다.
pknotz@s883422: (foo) ~/bd$(예: 정보)총 커밋 수: 175로컬 저장소: .git이름 있는 원격 저장소: (이름 -> 위치)origin -> git://sahp7577/home/sahpnotz/bd.html현재 지점: foo암호화 체크섬(sha1sum): bd248d1de7d759eb48e8b5ff3bb3bb3bb0eca4c5bf기본 풀/푸시 저장소: 오리진기본 풀/푸시 옵션: branch.foo.remote = 오리진branch.foo.devel = refs/heads/aal_devel_1기여자 수: 3명파일 수: 28디렉토리 수: 20최대 파일 크기(바이트): 32473(pygooglechart-0.2.0/COPYING)커밋: 62
언급URL : https://stackoverflow.com/questions/171550/find-out-which-remote-branch-a-local-branch-is-tracking
'programing' 카테고리의 다른 글
WPF 클래스 라이브러리의 어셈블리 전체/루트 수준 스타일 (0) | 2023.04.11 |
---|---|
PowerShell에서 두 개의 텍스트 파일을 연결하는 방법은 무엇입니까? (0) | 2023.04.11 |
프로세스 ID(PID)가 존재하는지 확인하는 방법 (0) | 2023.04.11 |
SQL Server에서 GETDATE()를 밀리초 단위로 인쇄하려면 어떻게 해야 합니까? (0) | 2023.04.11 |
Excel 시트에서 정확히 지정된 범위를 판독하는 Python Panda 데이터 프레임 (0) | 2023.04.11 |