시도 git branch -r
했지만 로컬에서 추적 한 원격 지점 만 나열합니다. 내가 가지고 있지 않은 사람들의 목록을 어떻게 찾습니까? (명령에 모든 원격 분기가 나열되는지 추적되지 않는 분기 만 나열되는지는 중요하지 않습니다 .)
git branch -r
로컬에서 추적 한 원격 지점 만 표시하고있었습니다. 지금은 더 잘 작동합니다.
시도 git branch -r
했지만 로컬에서 추적 한 원격 지점 만 나열합니다. 내가 가지고 있지 않은 사람들의 목록을 어떻게 찾습니까? (명령에 모든 원격 분기가 나열되는지 추적되지 않는 분기 만 나열되는지는 중요하지 않습니다 .)
git branch -r
로컬에서 추적 한 원격 지점 만 표시하고있었습니다. 지금은 더 잘 작동합니다.
답변:
이곳 방문자의 대다수는 [ Git 1.7+의 모든 원격 브랜치를 어떻게 나열합니까? "라는 질문에 대한 정확하고 간단한 답변입니다. 입니다 :
git branch -r
소수의 경우 [1] git branch -r
이 작동하지 않습니다. 만약 git branch -r
하지 작업 시도하지 :
git ls-remote --heads <remote-name>
경우 git branch -r
없는 작업을 수행 어쩌면로 Cascabel는 말한다 "당신이 그렇게하는 것이 기본 refspec을 수정 한 git fetch
및 git remote update
모든 가져 오지 않습니다 remote
의 가지를" .
[1] 이 각주 2018-Feb의 글을 쓰고있는 동안, 나는 의견을보고 git branch -r
대다수 의 작품 ( 140 개 중 약 90 % 또는 125 개)을 보았습니다 .
경우 git branch -r
없는 작업을 수행, 검사는 git config --get remote.origin.fetch
와일드 카드 (포함 *
에 따라) 이 답변
git ls-remote [url]
당신이 :) 먼저 복제 할 필요가 없습니다
git branch -r
정확하고 간단한 답변이므로, asker는 git branch -r
대부분의 사용자가 여기에 오는 행동을 수정 한 특별한 경우가있었습니다. 있다
git branch -r
또한 나를 위해 일하지 않았다. 이미 현지에서 추적 한 지점을 나열한 것입니다. 그러나 git ls-remote --heads
원격 저장소에서 사용할 수있는 모든 지점을 나열했습니다.
git ls-remote
(및에 나열되지 않음 git branch -r
) 에서 가져 오려면 stackoverflow.com/a/26649770/873282에git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
설명 된대로 가져 오기 전에 실행 해야 합니다.
git fetch --all
현재 모든 원격 브랜치를 가져 오기 전에 수행 해야합니다.
remote show
로컬로 추적되지 않은 분기 및 아직 가져 오지 않은 분기를 포함하여 원격의 모든 분기를 표시합니다.
git remote show <remote-name>
또한 로컬 저장소와 관련된 지점의 상태를 표시하려고 시도합니다.
> git remote show origin
* remote origin
Fetch URL: C:/git/.\remote_repo.git
Push URL: C:/git/.\remote_repo.git
HEAD branch: master
Remote branches:
branch_that_is_not_even_fetched new (next fetch will store in remotes/origin)
branch_that_is_not_tracked tracked
branch_that_is_tracked tracked
master tracked
Local branches configured for 'git pull':
branch_that_is_tracked merges with remote branch_that_is_tracked
master merges with remote master
Local refs configured for 'git push':
branch_that_is_tracked pushes to branch_that_is_tracked (fast-forwardable)
master pushes to master (up to date)
branch_that_is_not_tracked tracked
?
branch_that_is_not_tracked
로컬 자식 분기에 의해 추적되지 않는 분기입니다. 그러나 로컬 리포지토리로 가져 왔으므로 원격 브랜치가 있습니다. 이상한 이유로 원격을 추적하는 로컬 분기가 없더라도이 git remote show
상태를 호출합니다 tracked
. 이 경우 반대의 tracked
is는 new
"가져 오지 않음"을 의미합니다.
git branch -r
여전히 원격 브랜치가 있음을 제안하지만 git remote show origin
그 사실을 보여줍니다 refs/remotes/origin/my-now-dead-branch stale (use 'git remote prune' to remove)
. 훨씬 더 유용합니다!
git branch -a | grep remotes/*
git branch -r
하며 OP가 충분하지 않다고 말했습니다.
git branch -a
과 git branch -r
나를 위해 모든 원격 지점을 나열 나는 확실히 어떤 영업 이익은 말했다 것은 참이면 아니에요. 방금 테스트 저장소를 설정하고 이것을 확인했습니다 (마스터 추적 원점 / 마스터 만 있었지만 여전히 두 플래그가있는 모든 원격 지점을 보았습니다).
git fetch
다음에 git branch -a
최근에 시작한이 나를 위해 실패합니다. 아마도 자식 동작이 변경 되었습니까?
사용하면 git branch -r
모든 원격 분기가 git branch -a
나열되고 모든 분기가 로컬 및 원격에 나열됩니다. 이 목록은 구식입니다. 이 목록을 최신 상태로 유지하려면 다음을 실행하십시오.
git remote update --prune
원격에서 모든 새로운 지점으로 로컬 지점 목록을 업데이트하고 더 이상 존재하지 않는 항목을 제거합니다. --prune없이이 업데이트 명령을 실행하면 새 분기가 검색되지만 더 이상 원격에서 분기되지는 않습니다.
리모컨을 지정하여이 업데이트 속도를 높일 수 있습니다. 그렇지 않으면 추가 한 모든 리모컨에서 업데이트를 가져옵니다.
git remote update --prune origin
그러나
git branch -ar
해야합니다.
-r
반환 합니다 . -a
로컬 및 원격 분기를 모두 반환합니다 . 따라서, git branch -a
및 git branch -ar
모두 동일한 결과를 얻었다.
내가 찾은 가장 간단한 방법 :
git branch -a
실행하는 가장 좋은 명령은 git remote show [remote]
입니다. 그러면 원격 및 로컬, 추적 및 추적되지 않은 모든 지점이 표시됩니다.
다음은 오픈 소스 프로젝트의 예입니다.
> git remote show origin
* remote origin
Fetch URL: https://github.com/OneBusAway/onebusaway-android
Push URL: https://github.com/OneBusAway/onebusaway-android
HEAD branch: master
Remote branches:
amazon-rc2 new (next fetch will store in remotes/origin)
amazon-rc3 new (next fetch will store in remotes/origin)
arrivalStyleBDefault new (next fetch will store in remotes/origin)
develop tracked
master tracked
refs/remotes/origin/branding stale (use 'git remote prune' to remove)
Local branches configured for 'git pull':
develop merges with remote develop
master merges with remote master
Local refs configured for 'git push':
develop pushes to develop (local out of date)
master pushes to master (up to date)
원격 브랜치를 얻으려면을 사용할 수 있습니다 grep
. 사용하려는 명령은 다음과 같습니다.
grep "\w*\s*(new|tracked)" -E
이 명령으로 :
> git remote show origin | grep "\w*\s*(new|tracked)" -E
amazon-rc2 new (next fetch will store in remotes/origin)
amazon-rc3 new (next fetch will store in remotes/origin)
arrivalStyleBDefault new (next fetch will store in remotes/origin)
develop tracked
master tracked
이에 대한 별명을 작성할 수도 있습니다.
git config --global alias.branches "!git remote show origin | grep \w*\s*(new|tracked) -E"
그럼 당신은 그냥 실행할 수 있습니다 git branches
.
알고있는 원격 지점이 있지만 목록에 표시되지 않는 경우 다음을 사용하여 오리진이 올바르게 설정되었는지 확인할 수 있습니다.
git remote show origin
이것이 모두 좋으면 업데이트를 실행해야 할 수도 있습니다.
git remote update
성공적으로 실행되면 다른 답변의 내용을 수행 할 수 있어야합니다.
git branch -r
이 명령을 사용하여
git log -r --oneline --no-merges --simplify-by-decoration --pretty=format:"%n %Cred CommitID %Creset: %h %n %Cred Remote Branch %Creset :%d %n %Cred Commit Message %Creset: %s %n"
CommitID : 27385d919
Remote Branch : (origin/ALPHA)
Commit Message : New branch created
커밋 메시지 및 커밋 ID를 포함하여 모든 리모트 브랜치를 나열합니다.
나열하는 원격 출처가 실제로 원하는 저장소이며 이전 복제본이 아닌지 확인하십시오.
결국 원하는 것을 얻기 위해 엉망 쉘 파이프 라인을 만들었습니다. 방금 원점 원격에서 분기를 병합했습니다.
git branch -r --all --merged \
| tail -n +2 \
| grep -P '^ remotes/origin/(?!HEAD)' \
| perl -p -e 's/^ remotes\/origin\///g;s/master\n//g'
받아 들여진 대답은 저에게 효과적입니다. 그러나 가장 최근부터 커밋을 정렬하는 것이 더 유용하다는 것을 알았습니다.
git branch -r --sort=-committerdate
git fetch
와git remote update
모든 원격의 가지를 가져 오지 않는다? 그렇지 않으면 당신은 그냥 가져 와서 사용할 수 있기 때문에git branch -r
...