여기에 대한 답변의 대부분은의 출력 구문 분석을 복잡하게 만듭니다 git branch -r
. 다음을 사용할 수 있습니다for
루프를 사용하여 리모컨의 모든 분기에 대해 추적 분기를 만들 .
예
이 원격 지점이 있다고 가정 해보십시오.
$ git branch -r
origin/HEAD -> origin/master
origin/development
origin/integration
origin/master
origin/production
origin/staging
로컬에서 이미 마스터 이외의 것을 추적하고 있지 않은지 확인하십시오.
$ git branch -l # or using just git branch
* master
이 하나의 라이너를 사용하여 추적 분기를 만들 수 있습니다.
$ for i in $(git branch -r | grep -vE "HEAD|master"); do
git branch --track ${i#*/} $i; done
Branch development set up to track remote branch development from origin.
Branch integration set up to track remote branch integration from origin.
Branch production set up to track remote branch production from origin.
Branch staging set up to track remote branch staging from origin.
이제 확인하십시오 :
$ git branch
development
integration
* master
production
staging
삭제하려면 :
$ git br -D production development integration staging
Deleted branch production (was xxxxx).
Deleted branch development (was xxxxx).
Deleted branch integration (was xxxxx).
Deleted branch staging (was xxxxx).
-vv
스위치를 사용하면 git branch
다음을 확인할 수 있습니다.
$ git br -vv
development xxxxx [origin/development] commit log msg ....
integration xxxxx [origin/integration] commit log msg ....
* master xxxxx [origin/master] commit log msg ....
production xxxxx [origin/production] commit log msg ....
staging xxxxx [origin/staging] commit log msg ....
for 루프 분석
루프는 기본적으로 명령을 호출 git branch -r
하여를 사용하여 출력에서 HEAD 또는 마스터 분기를 필터링합니다 grep -vE "HEAD|master"
. 분기의 이름에서 origin/
하위 문자열을 뺀 값을 얻으려면 Bash의 문자열 조작을 사용하십시오 ${var#stringtoremove}
. 변수 "stringtoremove"문자열이 제거됩니다 $var
. 이 경우 origin/
변수 에서 문자열 을 제거합니다 $i
.
참고 : 또는 git checkout --track ...
이 작업을 수행 할 수도 있습니다 .
$ for i in $(git branch -r | grep -vE "HEAD|master" | sed 's/^[ ]\+//'); do
git checkout --track $i; done
그러나 나는이 방법에 관심이 없습니다. 체크 아웃을 수행 할 때 지점 사이를 전환하기 때문입니다. 완료되면 마지막으로 생성 한 지점으로 이동합니다.
참고 문헌
git checkout --track origin/branchname