728x90
반응형
질문 : 가장 최근 커밋으로 정렬 된 Git 브랜치 목록을 얻으려면 어떻게해야합니까?
맨 위에 "가장 최신"분기가있는 Git 저장소의 모든 분기 목록을 얻고 싶습니다. 여기서 "가장 최신"분기는 가장 최근에 커밋 된 분기입니다 (따라서 하나 일 가능성이 더 높습니다). 나는 주목하고 싶다).
Git을 사용하여 (a) 최신 커밋별로 분기 목록을 정렬하거나 (b) 기계 판독 가능한 형식으로 각 분기의 마지막 커밋 날짜와 함께 분기 목록을 가져올 수있는 방법이 있습니까?
최악의 경우, 항상 git branch
를 실행하여 모든 분기 목록을 가져오고 출력을 구문 분석 한 다음 git log -n 1 branchname --format=format:%ci
for each one, to get each branch 's commit date. 그러나 이것은 새로운 프로세스를 회전시키는 데 상대적으로 비용이 많이 드는 Windows 상자에서 실행되므로 분기가 많은 경우 Git 실행 파일을 분기당 한 번 실행하면 속도가 느려질 수 있습니다. 이 모든 것을 단일 명령으로 수행 할 수있는 방법이 있습니까?
답변
git for-each-ref
--sort=-committerdate
옵션을 사용하십시오.
git branch
대해 Git 2.7.0부터 사용할 수 있습니다.
기본 사용법:
git for-each-ref --sort=-committerdate refs/heads/
# Or using git branch (since version 2.7.0)
git branch --sort=-committerdate # DESC
git branch --sort=committerdate # ASC
고급 사용법:
git for-each-ref --sort=committerdate refs/heads/ --format='%(HEAD) %(color:yellow)%(refname:short)%(color:reset) - %(color:red)%(objectname:short)%(color:reset) - %(contents:subject) - %(authorname) (%(color:green)%(committerdate:relative)%(color:reset))'
사용당 (Unix):
~/.gitconfig
에 다음 코드 조각을 넣을 수 있습니다. recentb 별칭은 두 가지 인수를 허용합니다.
refbranch
:에 대해 계산되는 지점 앞서 및 열 뒤에. 기본 마스터count
: 표시 할 최근 분기 수. 기본값 20
[alias]
# ATTENTION: All aliases prefixed with ! run in /bin/sh make sure you use sh syntax, not bash/zsh or whatever
recentb = "!r() { refbranch=$1 count=$2; git for-each-ref --sort=-committerdate refs/heads --format='%(refname:short)|%(HEAD)%(color:yellow)%(refname:short)|%(color:bold green)%(committerdate:relative)|%(color:blue)%(subject)|%(color:magenta)%(authorname)%(color:reset)' --color=always --count=${count:-20} | while read line; do branch=$(echo \"$line\" | awk 'BEGIN { FS = \"|\" }; { print $1 }' | tr -d '*'); ahead=$(git rev-list --count \"${refbranch:-master}..${branch}\"); behind=$(git rev-list --count \"${branch}..${refbranch:-master}\"); colorline=$(echo \"$line\" | sed 's/^[^|]*|//'); echo \"$ahead|$behind|$colorline\" | awk -F'|' -vOFS='|' '{$5=substr($5,1,70)}1' ; done | ( echo \"ahead|behind||branch|lastcommit|message|author\\n\" && cat) | column -ts'|';}; r"
출처 : https://stackoverflow.com/questions/5188320/how-can-i-get-a-list-of-git-branches-ordered-by-most-recent-commit
728x90
반응형
'개발관련 > Git' 카테고리의 다른 글
Git 커밋 후크 건너 뛰기 (0) | 2021.11.16 |
---|---|
"git export"(예 : "svn export")를 수행하는 방법 (0) | 2021.11.16 |
Git에서 마스터에서 브랜치로 변경 사항 가져 오기 (0) | 2021.11.16 |
Git에서 충돌하는 파일을 나열하는 가장 간단한 방법 (0) | 2021.11.15 |
git stash create로 만든 stash을 삭제하는 방법 (0) | 2021.11.15 |