source

Bash 명령 프롬프트에 git 분기 추가

manysource 2023. 5. 5. 09:54

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\]:\[\03‌​3[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) \$ ' 

J'e댓글에서 언급한 바와 같이.

우분투

『 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로 들어가 보십시오.프롬프트와 함께 현재 분기가 표시됩니다.

4 추가 정보 - MAC/Linux

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