원격 브랜치의 git checkout을 peco로 쉽게 만들기
명령
git checkout $(git branch -a --sort=-authordate | cut -b 3- | grep -v -- "->" | peco | sed -e "s%remotes/origin/%%")
(위의 동영상에서 oh-my-zsh의 명령 별칭에서 git 명령을 단축했습니다.)
추가 (2019/01/16)
명령을 조금 개선했습니다.
git branch -a --sort=-authordate | grep -v -e '->' -e '*' | perl -pe 's/^\h+//g' | perl -pe 's#^remotes/origin/##' | perl -nle 'print if !$c{$_}++' | peco | xargs git checkout
변경점:
CTRL-C
등으로 중단한 경우 거기에서 명령을 종료하도록 했습니다. (git checkout
를 실행할 수 없음) 별칭을 설정하려면 .bashrc, .zshrc 등에 다음 함수 정의를 추가하면
gcop
브랜치를 선택할 수 있습니다. git checkout peco의 약자이지만 기호로.gcop() {
git branch -a --sort=-authordate |
grep -v -e '->' -e '*' |
perl -pe 's/^\h+//g' |
perl -pe 's#^remotes/origin/##' |
perl -nle 'print if !$c{$_}++' |
peco |
xargs git checkout
}
파이프의 각 명령 설명
git branch -a --sort=-authordate
리모트 추적 브랜치를 포함한 브랜치명의 일람을, 브랜치의 선도순으로 역순으로 소트한 상태로 취득합니다.
grep -v -e '->' -e '*'
다음 두 패턴의 행을 제거합니다.
origin/HEAD -> origin/master
* develop
perl -pe 's/^\h+//g'
각 줄 머리의 공백을 삭제합니다.
perl -pe 's#^remotes/origin/##'
#
는 구분 기호입니다. (슬래시의 이스케이프 지옥을 피하기 위해서 슬래시 이외를 구분자에 사용.)리모트 추적 브랜치명의 선두에는
remotes/origin/
(이)가 붙습니다만, 이것을 포함한 상태로 그대로 체크아웃 하면, 로컬 브랜치가 작성되지 않고, 이른바 detached HEAD 상태가 되어 버려 불편하므로 제거합니다.perl -nle 'print if !$c{$_}++'
정렬하지 않고 중복 행을 제거합니다.
peco
페코.
Reference
이 문제에 관하여(원격 브랜치의 git checkout을 peco로 쉽게 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ymm1x/items/a735e82244a877ac4d23텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)