.git 폴더가있는 모든 하위 디렉터리에서 현재 브랜치를 가져 오기위한 훌륭한 솔루션을 찾았습니다. 각 저장소에 다른 브랜치가 체크 아웃 된 경우에도 마찬가지입니다. 이 명령은 한 줄로되어 있으며 다른 git 명령을 수정할 수있을만큼 유연하며 별칭을 지정할 수 있습니다.
다음을 복사하여 붙여 넣으십시오.
find . -type d -maxdepth 2 -name .git -exec sh -c 'cd $0 && cd .. && git pull origin $(git rev-parse --abbrev-ref HEAD)' {} \;
분석 :
find . -type d -maxdepth 2 -name .git
현재 디렉토리 (find.)에서 이름이 ".git"(-name .git) 인 모든 디렉토리 (-type d)를 찾아 최대 2 개의 디렉토리 깊이 (1이 아닌 2 개)를 찾습니다. git repo 폴더 내의 git 폴더).
-exec sh -c
다음 셸 명령을 실행합니다 (exec sh -c).
'cd $0 && cd .. && git pull origin $(git rev-parse --abbrev-ref HEAD)'
디렉터리를 첫 번째 인수 (cd $ 0)로 변경 한 다음 디렉터리를 한 수준 위로 변경하여 .git 폴더 (cd ..)를 남겨두고 현재 분기에 대해 git rev-parse ...를 실행하여 분기를 지정하면서 git pull origin을 수행합니다. HEAD 커밋.
{} \;
"{}"는 초기 find 명령 에서 얻은 결과 상대 경로 입니다. ; 명령을 종료하는 데 사용됩니다.
zsh의 MacOS 10.14.6에서 테스트되었습니다. 있는 그대로 원격 및 로컬 분기의 이름이 동일한 AFAIK 인 경우에만 작동합니다.
이를 수정하여 상태를 가져올 수 있습니다. 나는 당신이 이것을 더 유연하게 만들기 위해 논쟁을 추가 할 수 있다고 기대하지만 아직 시도하지 않았습니다.
hg mercurial
.