Bash 명령 프롬프트에 git 분기 추가
현재 작업 중인 git 브랜치를 bash 프롬프트에 추가(체크아웃)하려고 했지만 성공하지 못했습니다.(액티브 디렉토리/파일을 보여주는 현재 경로를 그대로 유지하면서) 집에 .bashrc 파일이 있지만 .profile 파일을 언급하는 사람들도 많이 보았습니다.
1 use git 1.9.3 파일: 사용__git_ps1
Git는 함수를 포함하는 셸 스크립트를 제공합니다.__git_ps1
그
bash PS1 프롬프트에 추가할 텍스트를 인쇄합니다(지점 이름 포함).
가장 기본적인 용도는 다음과 같습니다.
$ __git_ps1
(master)
또한 선택적 형식 문자열을 사용합니다.
$ __git_ps1 'git:[%s]'
git:[master]
얻는 방법
먼파을어예복사니다합에가딘일저예(:~/.git-prompt.sh
).
옵션 1: 파일 시스템의 기존 복사본을 사용합니다.예(Mac OS X 10.15):
$ find / -name 'git-prompt.sh' -type f -print -quit 2>/dev/null
/Library/Developer/CommandLineTools/usr/share/git-core/git-prompt.sh
옵션 2: GitHub에서 스크립트를 가져옵니다.
다음으로, 여러분의 런다음다추행가다니합에 하세요..bashrc/.zshrc
:
source ~/.git-prompt.sh
마지막으로 변경합니다.PS1
을 부르다__git_ps1
명령-분포로:
배쉬:
PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '
Zsh:
setopt PROMPT_SUBST ; PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ '
git < 1.9.3
그러나 Git 1.9.3(2014년 5월) 이상에서만 해당 지점 이름(!)을 안전하게 표시할 수 있습니다.
리처드 한센()richardhansen
의 커밋 8976500을 참조하십시오.
bash와 zsh 모두 PS1의 값은 매개 변수 확장, 명령 대체 및 산술 확장의 영향을 받습니다.
않은을 스케이프원 분기이포대신는함에
PS1
또는 모드로 할 때는 2단계 또는 3단계로 구성합니다.PS1
분기 이름을 포함하는 변수를 참조합니다.
셸이 재귀적으로 확장되지 않기 때문에 다음과 같이 특수하게 조작된 분기 이름에 의한 임의 코드 실행을 방지합니다.
'$(IFS=_;cmd=sudo_rm_-rf_/;$cmd)'.
어떤 사악한 마음이 그런 가지의 이름을 지을까요? ;) (xkcd에서처럼 엄마 옆에)
기타 예제
still_messages_1이 설명에 보고합니다.
만약 당신이 컬러 프롬프트를 원한다면 이것은 잘 작동하는 것처럼 보입니다.
xterm
(내 안에서.bashrc
):
PS1='\[\e]0;\u@\h: \w\a\]\n${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]$(__git_ps1)\$ '
가지를 포함한 모든 것이 다른 색입니다.
Linux Mint 17.3 계피 64비트에서:
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[01;34m\] \w\[\033[00m\]$(__git_ps1) \$ '
우분투
『 PS1』에서 수정
bashrc
와 함께,PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\033[0;32m$(__git_ps1 " (%s)")\033[0m\$ ' # ---AND--- PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w$(__git_ps1 " (%s)")\$ '
다음과 같은 단계를 수행합니다. (Linux)
을 편집합니다.~/.bashrc
은 "Mac", "Mac"입니다).~/.bash_profile
)
# Git branch in prompt.
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1="\u@\h \W\[\033[32m\]\$(parse_git_branch)\[\033[00m\] $ "
이제 새 터미널 창을 시작하고 git-repo로 들어가 보십시오.프롬프트와 함께 현재 분기가 표시됩니다.
1 - bash-complete가 없는 경우...:sudo apt-get install bash-completion
2 - .bashrc 파일을 편집하고 다음을 확인(또는 추가)합니다.
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
라인 앞: 3-... 프롬프트 행 앞에:export PS1='$(__git_ps1) \w\$ '
(__git_ps1이 Git 분기를 표시합니다.)
4ppmsource .bashrc
편집:
추가 읽기: 휠을 재창조하지 마십시오.
Git 상태를 표시하도록 프롬프트를 구성한 방법은 다음과 같습니다.
git-prompt 스크립트 가져오기:
curl -o ~/.git-prompt.sh https://raw.githubusercontent.com/git/git/master/contrib/completion/git-prompt.sh
그리고 .bashrc 파일에 다음 코드를 추가하여 프롬프트를 사용자 지정합니다.
# Load Git functions
source ~/.git-prompt.sh
# Syntactic sugar for ANSI escape sequences
txtblk='\e[0;30m' # Black - Regular
txtred='\e[0;31m' # Red
txtgrn='\e[0;32m' # Green
txtylw='\e[0;33m' # Yellow
txtblu='\e[0;34m' # Blue
txtpur='\e[0;35m' # Purple
txtcyn='\e[0;36m' # Cyan
txtwht='\e[0;37m' # White
bldblk='\e[1;30m' # Black - Bold
bldred='\e[1;31m' # Red
bldgrn='\e[1;32m' # Green
bldylw='\e[1;33m' # Yellow
bldblu='\e[1;34m' # Blue
bldpur='\e[1;35m' # Purple
bldcyn='\e[1;36m' # Cyan
bldwht='\e[1;37m' # White
unkblk='\e[4;30m' # Black - Underline
undred='\e[4;31m' # Red
undgrn='\e[4;32m' # Green
undylw='\e[4;33m' # Yellow
undblu='\e[4;34m' # Blue
undpur='\e[4;35m' # Purple
undcyn='\e[4;36m' # Cyan
undwht='\e[4;37m' # White
bakblk='\e[40m' # Black - Background
bakred='\e[41m' # Red
badgrn='\e[42m' # Green
bakylw='\e[43m' # Yellow
bakblu='\e[44m' # Blue
bakpur='\e[45m' # Purple
bakcyn='\e[46m' # Cyan
bakwht='\e[47m' # White
txtrst='\e[0m' # Text Reset
# Prompt variables
PROMPT_BEFORE="$txtcyn\u@\h $txtwht\w$txtrst"
PROMPT_AFTER="\\n\\\$ "
# Prompt command
PROMPT_COMMAND='__git_ps1 "$PROMPT_BEFORE" "$PROMPT_AFTER"'
# Git prompt features (read ~/.git-prompt.sh for reference)
export GIT_PS1_SHOWDIRTYSTATE="true"
export GIT_PS1_SHOWSTASHSTATE="true"
export GIT_PS1_SHOWUNTRACKEDFILES="true"
export GIT_PS1_SHOWUPSTREAM="auto"
export GIT_PS1_SHOWCOLORHINTS="true"
자세한 내용을 알고 싶으시면 여기에서 모든 도트 파일을 확인하실 수 있습니다. https://github.com/jamming/dotfiles
Mac의 경우 http://martinfitzpatrick.name/article/add-git-branch-name-to-terminal-prompt-mac/ :
# Git branch in prompt.
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1="\u@\h \W\[\033[32m\]\$(parse_git_branch)\[\033[00m\] $ "
root:~/project# -> root:~/project(dev)#
~/.svrc의 끝에 다음 코드를 추가합니다.
force_color_prompt=yes
color_prompt=yes
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[01;31m\]$(parse_git_branch)\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w$(parse_git_branch)\$ '
fi
unset color_prompt force_color_prompt
먼저 홈 디렉토리에서 Bash 프로파일을 엽니다.기본 편집기를 사용하여 bash_profile을 열고 편집하는 가장 쉬운 방법입니다.
예를 들어 VS Code를 사용하여 code.bash_profile 명령을 사용하여 엽니다.
그런 다음 다음 코드를 Bash에 붙여넣습니다.
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1="\u@\h \W\[\033[32m\]\$(parse_git_branch)\[\033[00m\] $ "
함수
parse_git_message
지점 이름을 가져온 다음 PS1을 통해 터미널에서 표시할 수 있습니다.
여기서,
\u = 사용자 이름
= 정적 텍스트
\h = 컴퓨터 이름
\w = 현재 디렉터리
= 정적 텍스트
추가 사용자 지정을 위해 이러한 변수를 변경하거나 제거할 수 있습니다.
터미널에서 처음으로 Git를 사용하거나 구성 후 즉시 Git를 사용하는 경우 지점 이름이 표시되지 않을 수 있습니다.
이 문제가 발생하면 걱정하지 마세요.그런 경우에는 샘플 저장소를 만들고 몇 가지 변경 후에 커밋합니다.commit 명령이 한 번 실행되면 단말기는 그때부터 git 분기를 찾을 것입니다.
저는 기존 프롬프트를 교체하는 대신 기존 프롬프트에 추가되는 깨끗한 솔루션을 원했습니다.다른 솔루션과 마찬가지로 이것을 .bashrc의 맨 아래에 추가합니다.
# function
parse_git_branch() {
if [ -n "$(git rev-parse --git-dir 2> /dev/null)" ]; then
echo ">> $(git rev-parse --abbrev-ref HEAD) >>"
fi
}
# environment customization
export PS1="\$(parse_git_branch)\n$PS1"
이 설정은 다음과 같은 프롬프트를 표시합니다.
>> branchname >>
user@host:~/current/path$
또한 프롬프트에 약간의 색상을 추가하여 더 돋보이고 싶습니다.
export PS1="\e[0;36m\$(parse_git_branch)\e[0m\n$PS1"
분기 이름이 SYAN에 표시됩니다.
vim ~/.bash
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1="\u@\h \[\033[32m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\] $"
최신 변경 사항을 반영하려면 다음 명령을 실행합니다.
source ~/.bashrc
출력:-
chandrakant@NDL41104 ~/Chandrakant/CodeBase/LaravelApp (development) $
생선 껍질을 사용하면 상당히 직선적입니다.물고기는 많은 맛있는 것들과 함께 오는 상호작용적인 껍질입니다.다음을 사용하여 설치할 수 있습니다.apt-get
.
sudo apt-get install fish
그런 다음 다음 다음을 사용하여 프롬프트 설정을 변경할 수 있습니다.
> fish_config
Web config started at 'http://localhost:8001/'. Hit enter to stop.
Created new window in existing browser session.
이제 로 이동합니다.http://localhost:8001/
프롬프트 탭을 열고 클래식 + git 옵션을 선택합니다.
이제 사용 프롬프트 버튼을 클릭하면 설정이 완료됩니다.
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
export PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]$(parse_git_branch)\n\$ '
Ubuntu 터미널에서 GIT repo의 분기 이름을 표시하려면 다음 단계를 수행합니다.
1단계: 다음 명령을 사용하여 터미널을 열고 .tvrc를 편집합니다.
vi.svrc
2단계: .vmsrc 파일의 끝에 다음 행을 추가합니다.
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/' }
export PS1="\u@\h \W\[\033[32m\]\$(parse_git_branch)\[\033[00m\] $ "
3단계: 다음을 수행하여 루트(홈) 디렉토리에 있는 source .vmsrc:
/root 폴더:~$source .bashrc
4단계: 다시 시작하고 터미널을 열고 cmd를 확인합니다.GItrepo 디렉터리 경로로 이동하면 완료됩니다.:)
제가 사용하는 간단한 클린 버전은 다음과 같습니다: 링크
이 보고서를 확인하십시오. https://github.com/magicmonty/bash-git-prompt
이 프롬프트는 "zsh에 대한 정보 git 프롬프트"의 포트입니다.
Gitclone을 통해 이 리포지토리를 홈 디렉토리에 복제합니다.
git clone https://github.com/magicmonty/bash-git-prompt.git ~/.bash-git-prompt --depth=1
~/.bashrc에 추가:
if [ -f "$HOME/.bash-git-prompt/gitprompt.sh" ]; then
GIT_PROMPT_ONLY_IN_REPO=1
source $HOME/.bash-git-prompt/gitprompt.sh
fi
나는 bin 폴더에 들어가는 python의 작은 스크립트를 시도해 보았습니다.'gitprompt' 파일
#!/usr/bin/env python
import subprocess, os
s = os.path.join(os.getcwd(), '.git')
def cut(cmd):
ret=''
half=0
record = False
for c in cmd:
if c == "\n":
if not (record):
pass
else:
break
if (record) and c!="\n":
ret = ret + c
if c=='*':
half=0.5
if c==' ':
if half == 0.5:
half = 1
if half == 1:
record = True
return ret
if (os.path.isdir(s)):
out = subprocess.check_output("git branch",shell=True)
print cut(out)
else:
print "-"
실행 파일 등으로 만듭니다.
그런 다음 다음과 같이 bash 프롬프트를 적절히 조정합니다.
\u:\w--[$(gitprompt)] \$
언급URL : https://stackoverflow.com/questions/15883416/adding-git-branch-on-the-bash-command-prompt
'source' 카테고리의 다른 글
내 파일을 무시하는 gitignore 규칙 설명 (0) | 2023.05.05 |
---|---|
기록에 보관하지 않고 명령 실행 (0) | 2023.05.05 |
어떻게 하면 C에서 int를 문자열로 변환할 수 있습니까? (0) | 2023.05.05 |
Azure/에서 과도한 HTTP 응답 헤더 제거/숨기기/사용 안 함UrlScan이 없는 IIS7 (0) | 2023.05.05 |
MongoDB vs.카산드라 vs.실시간 광고 플랫폼용 MySQL (0) | 2023.05.05 |