git branch --list
의 현재 버전은 대부분 작동하지만 느리고 번거 롭습니다. 이것은 GIT 자체에서 쉽게 고정 될 수 있지만 사용자 인터페이스를 개선하려는 모든 패치는 사실상 거부됩니다.
외부 명령 git branch-list
솔루션입니다.
git branch-list
더 나은 이유는 무엇입니까?
git branch --list
원격 브랜치를 추적하는 master
브랜치가 있지만 항상 최신 정보는 아닙니다 (Linux의 저장소를 사용하겠습니다).
이 경우 공식 git branch
다음을 보여줍니다.
* master
이것은 많은 정보를 제공하지 않습니다. --verbose
옵션을 사용하면 다음과 같이받습니다.
* master 9f4ad9e425a1 [behind 16592] Linux 5.12
좋아, 우리는 16592 년에 뒤쳐져 있지만, 무엇입니까? 커밋 타이틀에서 추측 할 수는 있지만 실제로는 명확하지 않습니다.
우리가 사용한다면 --verbose --verbose
우리는 얻을 수있다 :
* master 9f4ad9e425a1 [origin/master: behind 16592] Linux 5.12
마지막으로 유용한 정보가 있지만 두 가지 수준의 구두가 필요했으며 일반적으로 유용하지 않은 많은 정보가 있습니다.
git branch-list
반면에 git branch-list
와 함께 :
* master origin/master
팔! 바로 우리는 가장 유용한 정보를 볼 수 있습니다 : master
트랙 origin/master
.
그런 다음 지점이 언제 최신 상태인지 알고 싶다면 -t
:
* master origin/master<
14386 커밋과는 달리 16592 커밋이 뒤에 커밋되면 우리는 정말로 신경 쓰나요? 아니요, 우리가 관심을 갖는 것은 <기호가 나타내는 <
상징이라는 것입니다. 이것은 GIT_PS1_SHOWUPSTREAM=auto
와 함께 __git_ps1
사용할 때 얻는 것과 동일합니다.
더 많은 정보를 원한다면 -v
옵션을 지정할 수 있습니다.
* master [origin/master<] Linux 5.12
우리는 모든 수준에서 가장 유용한 정보를 모두 얻습니다 (객체 ID가 무엇인지 신경 쓰는 사람).
공식 git branch
에서 git branch-list
의 장점을 얻을 수 있습니다.
예를 들어, 문서를 doc-
으로 접두사로 업데이트하는 몇 가지 지점이 있다고 가정 해 봅시다. 공식 git branch
사용하면 다음과 같은 작업을 수행 할 수 있습니다.
git branch --list doc-*
그러나 이것은 작동하지만 1) --list
지정하지 않는 한 작동하지 않으며 2) 별표 ( *
)를 추가해야합니다.
반면에 git branch-list
와 함께 :
git branch-list doc
옵션이나 별표가 필요하지 않습니다. 그것은 단지 곧바로 작동합니다.
또 다른 예; 다음 구성으로 유용한 분기 정렬을 활성화 할 수 있습니다.
[branch]
sort = -committerdate
그러나 git branch-list
사용하면 필요하지 않습니다. 기본적으로 정렬됩니다.
성능을 테스트하기 위해 실제 저장소 인 Linux를 사용하겠습니다. 지난 10 년 동안 완전히 무작위로 지점에서 100 개의 지점을 만듭니다.
캐시 워밍업 후 :
git branch --list --verbose
21.804 seconds
21.614 seconds
21.415 seconds
git branch-list
0.104 seconds
0.107 seconds
0.107 seconds
질문도 있습니까?
git branch-list
git branch --list
와 동일하지만 훨씬 좋습니다 .
$PATH
의 어느 곳에서나 스크립트를 복사하고 실행 가능하게 만들거나 ~/bin/
디렉토리에 기본적으로 설치하는 make install
실행하십시오 ( $PATH
에 있는지 확인하십시오).