내 터미널에는 다음과 같은 출력이 있습니다.
pc@pop-os:~/my-project (main)$
프로젝트는 GitHub를 통해 다운로드됩니다. (main)
색상은 녹색입니다. 프로젝트 디렉터리로 이동했을 때 터미널에 나타나는 브랜치 이름으로 설정했습니다. 변경하면 단말기가 변경사항을 인식하여 색상을 (main)
빨간색으로 변경하도록 하고 싶습니다. 누구든지 도와주실 수 있나요?
답변1
저는 이 parseGitBranch
기능을 사용하여 색상을 정의합니다. 함수는 다음과 같아야 합니다.
parseGitBranch () {
if ! git rev-parse --git-dir &> /dev/null; then
return
fi
branch="($(git branch --show-current))"
local STATUS
STATUS=$(git status --porcelain)
if [ -n "$STATUS" ]; then
echo -e "\033[38;5;1m $branch" #red
else
echo -e "\033[38;5;34m $branch" #green
fi
}
그리고 다음과 같이 설정해야 합니다 PS1
:
PS1="\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\$(parseGitBranch) \[\033[00m\]\$\n>"
위의 코드는 내부에 있을 수 있습니다 ~/.bashrc
.
설명하다
다음 줄은 현재 디렉터리가 다음과 같은지 확인합니다.자식 프로젝트:
if ! git rev-parse --git-dir &> /dev/null; then
return
fi
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
코드 를 로 변경했습니다 git branch --show-current
. 이는 현재 지점 이름을 얻는 더 쉬운 방법입니다.
이제 위의 조건이 true이면 함수는 현재 git 디렉터리의 상태를 확인합니다.
프로젝트에 변경 사항이 있는지 확인하는 가장 효율적인 방법은 를 사용하는 것입니다 git status --porcelain
. 따라서 변경 사항이 없으면 출력이 git status --porcelain
비어 있게 됩니다. -n "$STATUS"
STATUS의 길이가 0이 아닌지 확인하십시오 .
true 인 경우 -n $STATUS
분기 색상은 빨간색이 됩니다(변경했기 때문에) echo -e "\033[38;5;1m $branch" #red
.
false인 경우 분기 색상은 녹색이 됩니다 echo -e "\033[38;5;34m $branch" #green
.
당신은 확인할 수 있습니다이 링크Bash 색상 및 형식에 대한 추가 정보. 터미널이 일부 형식을 지원하지 않거나 색상이 올바르게 인쇄되지 않을 수 있습니다.