2013-06-27 11 views
38

Oglądałem niektóre z filmów z Team Treehouse i mają bardzo ładny terminal podczas pracy z Git.Jak wyświetlić bieżącą ścieżkę oddziału i folderu w terminalu?

Na przykład mają (coś podobnego):

[email protected]: [/Work/test - feature-branch-name] $ git add . 
[email protected]: [/Work/test - feature-branch-name] $ git commit -m "Some feature." 
[email protected]: [/Work/test - feature-branch-name] $ git checkout master 
[email protected]: [/Work/test - master] $ git status 

Jak mój zacisk pokazać mi kilka przydatnych informacji o tym, co jestem na oddział, z kolorami odróżniać bity danych chcę? Czy istnieje jakiś de facto plugin, którego jeszcze nie znalazłem?

Używam Mac OSX 10.8

Odpowiedz

45

Nie chodzi o wtyczki. Chodzi o szybkie triki w powłoce.

Dla chłodnym instalacji w bash, sprawdź projekt dotfiles tego faceta:

https://github.com/mathiasbynens/dotfiles

Aby uzyskać fantazyjny wiersz, obejmują .bash_prompt w twojej ~/.bash_profile lub ~/.bashrc.

Aby uzyskać dokładnie ten sam wiersz jak w swoim pytaniu, zmienić linię export PS1 na koniec .bash_prompt jak ten:

export PS1="\[${BOLD}${MAGENTA}\]\u\[$WHITE\]@\[$ORANGE\]\h\[$WHITE\]: [\[$GREEN\]\w\[$WHITE\]\$([[ -n \$(git branch 2> /dev/null) ]] && echo \" - \")\[$PURPLE\]\$(parse_git_branch)\[$WHITE\]] \$ \[$RESET\]" 

I skończył przy użyciu wszystkich .bash* pliki z tego repozytorium około miesiąc temu i było to dla mnie bardzo przydatne.

Dla Git, są dodatkowe gadżety w .gitconfig.

A ponieważ jesteś użytkownikiem mac, jest jeszcze więcej gadżetów w .osx.

+0

Po tym ja dostaję: 'bash: parse_git_branch: nie komenda found' –

2

Pakiet git zainstalowany w twoim systemie zawiera pliki bash, które ułatwią ci tworzenie pouczającego pytania. Aby utworzyć kolory, musisz wstawić sekwencje znaków końca linii do znaku zachęty. Ostatnim elementem jest aktualizacja monitu po wykonaniu każdego polecenia za pomocą wbudowanej zmiennej PROMPT_COMMAND.

Edytuj swój ~/.bashrc, aby dołączyć poniższe, a powinieneś otrzymać podpowiedź w pytaniu, modulo pewne różnice w kolorach.

# 
# Git provides a bash file to create an informative prompt. This is its standard 
# location on Linux. On Mac, you should be able to find it under your Git 
# installation. If you are unable to find the file, I have a copy of it on my GitHub. 
# 
# https://github.com/chadversary/home/blob/42cf697ba69d4d474ca74297cdf94186430f1384/.config/kiwi-profile/40-git-prompt.sh 
# 
source /usr/share/git/completion/git-prompt.sh 

# 
# Next, we need to define some terminal escape sequences for colors. For a fuller 
# list of colors, and an example how to use them, see my bash color file on my GitHub 
# and my coniguration for colored man pages. 
# 
# https://github.com/chadversary/home/blob/42cf697ba69d4d474ca74297cdf94186430f1384/.config/kiwi-profile/10-colors.sh 
# https://github.com/chadversary/home/blob/42cf697ba69d4d474ca74297cdf94186430f1384/.config/kiwi-profile/40-less.sh 
# 
color_start='\e[' 
color_end='m' 
color_reset='\e[0m' 
color_bg_blue='44' 

# 
# To get a fancy git prompt, it's not sufficient to set PS1. Instead, we set PROMPT_COMMAND, 
# a built in Bash variable that gets evaluated before each render of the prompt. 
# 
export PROMPT_COMMAND="PS1=\"\${color_start}\${color_bg_blue}\${color_end}\[email protected]\h [\w\$(__git_ps1 \" - %s\")]\${color_reset}\n\$ \"" 

# 
# If you find that the working directory that appears in the prompt is ofter too long, 
# then trim it. 
# 
export PROMPT_DIRTRIM=3 
35

Prosty sposób

Otwarte ~/.bash_profile w swoim ulubionym edytorze i dodać następującą treść do dołu.

Git branch w trybie monitu.

parse_git_branch() { 
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/' 
} 

export PS1="\[email protected]\h \[\033[32m\]\w - \$(parse_git_branch)\[\033[00m\] $ " 

ADD GIT BRANCH NAME TO TERMINAL PROMPT (MAC)

+1

Lubiłem to z \ n przed znakiem $ na końcu, aby umieścić mój monit na następnej linii. – Gandalf458

+0

Zajęło 5 minut, aby w pełni dostosować! Oto kolor: https://misc.flogisoft.com/bash/tip_colors_and_formatting – rndrfero

25

Aby rozwinąć na istniejących wielkich odpowiedzi, bardzo prosty sposób, aby uzyskać wspaniałe patrząc terminala jest wykorzystanie open source dotfiles projekt.

https://github.com/mathiasbynens/dotfiles


enter image description here


Instalacja jest prosta martwy na OSX i Linux. Uruchom następującą komendę w Terminalu.

git clone https://github.com/mathiasbynens/dotfiles.git && cd dotfiles && source bootstrap.sh 

To będzie:

  1. Git sklonować repo.
  2. cd do folderu.
  3. Uruchom skrypt instalacyjny bash.
+3

wszelkie pomysły na odwrócenie tego? – ChickenWing24

+0

znaleźć sposób, aby go odwrócić @ ChickenWing24? – ollaollu

+0

@ollaollu odwróciłem to w pewien sposób. to był długi czas, więc nie pamiętam kroków 100%. ale w zasadzie usunąłem wszystkie pliki/foldery powiązane z tym repo. – ChickenWing24

4

Moja szybka obejmuje: stan

  • wyjściu ostatniego polecenia (jeśli nie jest 0)
  • Wyróżniające się zmienia, gdy korzeń
  • rsync -Style [email protected]:pathname dla copy-paste dobroci
  • Git oddziału , indeksu, zmodyfikowane, untracked i upstream informacji
  • Dość kolory

Przykład: Screenshot of my prompt in action Aby to zrobić, należy dodać następujące wpisy do ~/.bashrc:

# 
# Set the prompt # 
# 

# Select git info displayed, see /usr/lib/git-core/git-sh-prompt for more 
export GIT_PS1_SHOWDIRTYSTATE=1   # '*'=unstaged, '+'=staged 
export GIT_PS1_SHOWSTASHSTATE=1   # '$'=stashed 
export GIT_PS1_SHOWUNTRACKEDFILES=1  # '%'=untracked 
export GIT_PS1_SHOWUPSTREAM="verbose"  # 'u='=no difference, 'u+1'=ahead by 1 commit 
export GIT_PS1_STATESEPARATOR=''   # No space between branch and index status 
export GIT_PS1_DESCRIBE_STYLE="describe" # detached HEAD style: 
# contains  relative to newer annotated tag (v1.6.3.2~35) 
# branch  relative to newer tag or branch (master~4) 
# describe  relative to older annotated tag (v1.6.3.1-13-gdd42c2f) 
# default  exactly eatching tag 

# Check if we support colours 
__colour_enabled() { 
    local -i colors=$(tput colors 2>/dev/null) 
    [[ $? -eq 0 ]] && [[ $colors -gt 2 ]] 
} 
unset __colourise_prompt && __colour_enabled && __colourise_prompt=1 

__set_bash_prompt() 
{ 
    local exit="$?" # Save the exit status of the last command 

    # PS1 is made from $PreGitPS1 + <git-status> + $PostGitPS1 
    local PreGitPS1="${debian_chroot:+($debian_chroot)}" 
    local PostGitPS1="" 

    if [[ $__colourise_prompt ]]; then 
     export GIT_PS1_SHOWCOLORHINTS=1 

     # Wrap the colour codes between \[ and \], so that 
     # bash counts the correct number of characters for line wrapping: 
     local Red='\[\e[0;31m\]'; local BRed='\[\e[1;31m\]' 
     local Gre='\[\e[0;32m\]'; local BGre='\[\e[1;32m\]' 
     local Yel='\[\e[0;33m\]'; local BYel='\[\e[1;33m\]' 
     local Blu='\[\e[0;34m\]'; local BBlu='\[\e[1;34m\]' 
     local Mag='\[\e[0;35m\]'; local BMag='\[\e[1;35m\]' 
     local Cya='\[\e[0;36m\]'; local BCya='\[\e[1;36m\]' 
     local Whi='\[\e[0;37m\]'; local BWhi='\[\e[1;37m\]' 
     local None='\[\e[0m\]' # Return to default colour 

     # No username and bright colour if root 
     if [[ ${EUID} == 0 ]]; then 
      PreGitPS1+="$BRed\h " 
     else 
      PreGitPS1+="$Red\[email protected]\h$None:" 
     fi 

     PreGitPS1+="$Blu\w$None" 
    else # No colour 
     # Sets prompt like: [email protected]:~/prj/sample_app 
     unset GIT_PS1_SHOWCOLORHINTS 
     PreGitPS1="${debian_chroot:+($debian_chroot)}\[email protected]\h:\w" 
    fi 

    # Now build the part after git's status 

    # Highlight non-standard exit codes 
    if [[ $exit != 0 ]]; then 
     PostGitPS1="$Red[$exit]" 
    fi 

    # Change colour of prompt if root 
    if [[ ${EUID} == 0 ]]; then 
     PostGitPS1+="$BRed"'\$ '"$None" 
    else 
     PostGitPS1+="$Mag"'\$ '"$None" 
    fi 

    # Set PS1 from $PreGitPS1 + <git-status> + $PostGitPS1 
    __git_ps1 "$PreGitPS1" "$PostGitPS1" '(%s)' 

    # echo '$PS1='"$PS1" # debug  
    # defaut Linux Mint 17.2 user prompt: 
    # PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\[email protected]\h\[\033[01;34m\] \w\[\033[00m\] $(__git_ps1 "(%s)") \$ ' 
} 

# This tells bash to reinterpret PS1 after every command, which we 
# need because __git_ps1 will return different text and colors 
PROMPT_COMMAND=__set_bash_prompt 
+0

To jest niesamowicie czysty kod dla zapełnionego informacją pytania. Spędziłem wiele godzin, pracując nad moim postępem i wychodząc z pułapek, by dojść do sedna tego, co tu masz. Gorąco polecam zacząć od tego kodu, jeśli pracujesz nad niestandardowym, kolorowym, git statusem w wierszu polecenia. – wisbucky

Powiązane problemy