명령줄에서 Git 기본 분기 가져오기(Powershell 또는 Bash/Zsh)
11072 단어 programminggithubgitproductivity
Github API 메소드
repo
username/reponame
가 주어지면 다음 스크립트는 wget
도구와 sed
가 있는 경우 Bash, Dash/Ash 또는 Zsh에서 작동합니다.wget -q -O - "https://api.github.com/repos/username/reponame" | sed -nE 's/^\s+"default_branch": "([^"]+).+$/\1/p'
jq
가 있는 경우 훨씬 더 간단합니다.wget -q -O - "https://api.github.com/repos/username/reponame" | jq -r '.default_branch'
또는 선호하는 사람들을 위해
curl
:curl -s "https://api.github.com/repos/username/reponame" | jq -r '.default_branch'
이것은 Powershell에서도 매우 쉽습니다.
iwr -useb https://api.github.com/repos/username/reponame | ConvertFrom-Json | select -exp default_branch
요약하면 먼저 주어진 repo에 대한 정보를 쿼리한 다음 반환된 JSON을 구문 분석하여
default_branch
키 값을 추출합니다.이것은 반복적으로 사용할 수 있는 것입니까? 함수를 빌드하고 다음을 쉘 구성에 배치하는 것을 고려하십시오(예:
.bashrc
).defbranch () {
REPO=$1
wget -q -O - "https://api.github.com/repos/$REPO" | sed -nE 's/^\s+"default_branch": "([^"]+).+$/\1/p'
}
부담없이 use this gist
또는 Windows Powershell의 경우
Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
에 다음을 배치합니다.function defbranch {
Param ([string]$repo)
iwr -useb https://api.github.com/repos/$repo | ConvertFrom-Json | select -exp default_branch
}
부담없이 use this gist
Gitlab의 유사한 기능
위의 내용은 특히 Github 설정이기 때문에 Github에만 해당됩니다. Github에서는 빈 저장소라도
master
와 다른 기본 분기를 가질 수 있습니다.또 다른 인기 있는 "소셜 코딩"서비스인 Gitlab은 기능은 다르지만 비슷합니다. 채워진 저장소에는 기본 분기가 있을 수 있습니다. 빈 것은 그렇지 않습니다.
다음은 Gitlab API( see gist )를 사용하는 예제 함수입니다.
gldefbranch () {
REPO=$(echo $1 | sed "s/\//%2F/g")
BRANCH=$(wget -q -O - "https://gitlab.com/api/v4/projects/$REPO" | sed -nE 's/.*"default_branch":"([^"]+).*/\1/p')
[ "$BRANCH" == null ] && echo master || echo $BRANCH
}
그리고 Powershell에 상응하는 것:
function gldefbranch {
Param ([string]$repo)
$repo = $repo.replace("/","%2F")
$branch = (iwr -useb "https://gitlab.com/api/v4/projects/$repo" | ConvertFrom-Json | select -exp default_branch)
if ($branch) {
echo $branch
} else {
echo "master"
}
}
repo가 비어 있지 않은 경우 더 나은 보편적인 접근 방식
내 원래 의도는 리포지토리의 Github 설정을 새롭거나 오래된, 비어 있든 없든 읽는 것이었습니다. 하지만 단순히 기존 repo의 기본 브랜치를 가져오려면 API 호출이 필요하지 않습니다.
git ls-remote
를 사용할 수 있습니다.이러한 제안에 대해 u/Cyberbeni in this Reddit discussion 감사합니다.
원격 저장소의 기본 분기를 쿼리하려면 저장소 URL을
$REPO_URL
에 할당하거나 대체하여 다음을 시도하십시오.git ls-remote --symref "$REPO_URL" HEAD | sed -nE 's|^ref: refs/heads/(\S+)\s+HEAD|\1|p'
또는 동등한 Powershell:
"$(git ls-remote --symref 'https://gitlab.com/bowmanjd/dotfiles1.git' HEAD)" -replace '.*?^ref: refs/heads/(\S+).+','$1'
사용 가능한 경우 로컬 원본/HEAD 참조 가져오기
리포지토리가
git clone
로 다운로드된 경우 origin/HEAD
가 자동으로 설정됩니다. 이러한 경우 리모컨을 쿼리할 필요 없이 다음이 빠르게 작동해야 합니다.git symbolic-ref refs/remotes/origin/HEAD | cut -d '/' -f4
파워쉘에서:
(git symbolic-ref refs/remotes/origin/HEAD) -split '/' | select -Last 1
origin/HEAD
를 설정하지 않고도 로컬에서 쉽게 작업이 가능하므로 위의 내용은 신뢰할 수 없습니다.다시 한 번 u/Cyberbeni for the tip on Reddit 감사합니다.
로컬로 설정된 Git 환경 설정 가져오기
물론 현재 사용자가 선호하는 기본 분기를 알고 싶다면 다음과 같은 결과가 나오거나 설정되지 않은 경우 공백으로 표시됩니다.
git config init.defaultBranch
예를 들어 다음과 같이 이 값을
main
로 설정할 수 있습니다.git config --global init.defaultBranch main
즐거운 스크립팅!
Reference
이 문제에 관하여(명령줄에서 Git 기본 분기 가져오기(Powershell 또는 Bash/Zsh)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bowmanjd/get-github-default-branch-from-the-command-line-powershell-or-bash-zsh-37m9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)