8 Pytanie: Jak mogę wyświetlić bieżącą gałąź i ścieżkę folderu w terminalu?

pytanie utworzone w Thu, Jun 27, 2013 12:00 AM

Oglądałem niektóre z filmów Team Treehouse i podczas pracy z Gitem mają bardzo ładnie wyglądający terminal.

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

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

W jaki sposób mój terminal może pokazać mi przydatne informacje o tym, w jakiej gałęzi jestem, z kolorami, aby odróżnić potrzebne dane? Czy jest jakiś rodzaj faktycznej wtyczki, której jeszcze nie znalazłem?

Używam Mac OSX 10.8

    
57
8 odpowiedzi                              8                         

Nie chodzi o wtyczkę. Chodzi o szybkie sztuczki w powłoce.

Aby uzyskać fajną konfigurację w bashu, sprawdź projekt dotfiles tego faceta:

https://github.com/mathiasbynens/dotfiles

Aby uzyskać fantazyjny monit, dołącz .bash_prompt do ~/.bash_profile lub ~/.bashrc.

Aby uzyskać dokładnie taki sam monit jak w pytaniu, zmień linię export PS1 na końcu .bash_prompt w następujący sposób:

 
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\]"

Skończyło się na używaniu wszystkich plików .bash* z tego repozytorium około miesiąc temu i było to dla mnie naprawdę przydatne.

Dla Gita są dodatkowe gadżety w .gitconfig.

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

    
59
2013-07-06 15: 30: 48Z
  1. Po tym otrzymuję: bash: parse_git_branch: command not found
    2017-09-02 22: 34: 04Z
  2. @ SharikovVladislav Wszelkie aktualizacje na ten temat? Jak rozwiązać problem parse_git_branch: command not found?
    2019-02-25 05: 44: 28Z
  3. @ user2719875 Nie mam pomysłów, przepraszam
    2019-02-26 19: 48: 29Z

Prosty sposób

Otwórz ~/.bash_profile w swoim ulubionym edytorze i dodaj następującą zawartość do dołu.

Git w linii poleceń.

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

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

DODAJ GIT BRANCH NAZWA DO TERMINALU PROMPT (MAC)

    
50
2013-12-01 05: 32: 01Z
  1. Podobało mi się to z n przed znakiem $na końcu, aby umieścić mój wiersz w następnym wierszu.
    2014-03-17 17: 19: 59Z
  2. 5 minut, aby w pełni dostosować! Oto kolor: misc.flogisoft.com/bash/tip_colors_and_formatting
    2018-03-06 11: 33: 10Z

Aby rozwinąć istniejące świetne odpowiedzi, bardzo prostym sposobem uzyskania świetnego wyglądu terminala jest użycie projektu Dotfiles o otwartym kodzie źródłowym.

https://github.com/mathiasbynens/dotfiles


wprowadź opis obrazu tutaj>> </p>

<hr>
<p> Instalacja w systemie OSX i Linux jest prosta. Uruchom następujące polecenie w Terminalu. </p>

 <pre><code>git clone https://github.com/mathiasbynens/dotfiles.git && cd dotfiles && source bootstrap.sh
</code></pre>

<p> To będzie: </p>

<ol>
<li> Git klonuje repo. </li>
<li>
 <code>cd</code> do folderu. </li>
<li> Uruchom skrypt instalacyjny bash. </li>
</ol> </div>
<div class = 27

2015-02-07 20: 54: 13Z
  1. 2015-09-09 03: 01: 40Z
  2. @ ollaollu i odwróciłem to w pewien sposób. minęło jednak dużo czasu, więc nie pamiętam kroków 100%. ale to, co zrobiłem, to w zasadzie usunięcie wszystkich plików /folderów związanych z tym repo.
    2016-06-07 05: 19: 09Z
  3. Działa doskonale!
    2017-03-02 12: 34: 50Z
  4. należy zauważyć, że ten jeden liner może potencjalnie nadpisać wiele plików, więc należy zachować ostrożność
    2017-05-19 01: 17: 44Z
  5. ALERT: Nie używaj moich ustawień na ślepo, chyba że wiesz, co to pociąga za sobą. Używaj na własne ryzyko!
    2017-08-21 17: 15: 01Z

Mój monit zawiera:

  • Wyjdź ze stanu ostatniego polecenia (jeśli nie 0)
  • Charakterystyczne zmiany podczas wykonywania roota
  •  rsync - styl user@host:pathname do dobroci kopiowania i wklejania
  • Informacje o gałęzi Git, indeksie, zmodyfikowanej, nieśledzonej i upstream
  • Ładne kolory

Przykład:   Zrzut ekranu mojego monitu w akcji Aby to zrobić, dodaj następujące informacje do ~/.bashrc:

 
#
# Set the prompt #
#

# Select git info displayed, see /usr/share/git/completion/git-prompt.sh 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\u@\h$None:"
        fi

        PreGitPS1+="$Blu\w$None"
    else # No colour
        # Sets prompt like: ravi@boxy:~/prj/sample_app
        unset GIT_PS1_SHOWCOLORHINTS
        PreGitPS1="${debian_chroot:+($debian_chroot)}\u@\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\]\u@\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
    
11
2019-04-06 06: 50: 58Z
  1. To jest niesamowicie czysty kod dla zachęty do umieszczania informacji. Spędziłem wiele godzin pracując nad moją prośbą i wychodząc z pułapek, aby dojść do tego, co tu masz. Bardzo polecam, aby zacząć od tego kodu, jeśli pracujesz nad niestandardowym, kolorowym, gitem w monicie.
    2017-03-12 20: 34: 44Z
  2. - bash: __git_ps1: nie znaleziono polecenia
    2019-04-05 17: 57: 21Z
  3. @ Eugene przeniósł się do /usr/share/git/completion/git-prompt.sh. Zaktualizowano.
    2019-04-06 06: 50: 05Z

Wystarczy zainstalować wtyczki oh-my-zsh, jak opisano w tym linku .

wprowadź opis obrazu tutaj>> </p>

<p> Działa najlepiej na systemach MacOS i Linux. </p>

<p> <strong> Instalacja podstawowa </strong> </p>

<p> Oh My Zsh jest instalowany przez uruchomienie jednego z następujących poleceń w Twoim terminalu. Możesz to zainstalować za pomocą wiersza poleceń <code>curl</code> lub <code>wget</code>. </p>

<p> <strong> przez curl </strong> </p>

 <pre><code>sh -c

przez wget

 
sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
    
3
2018-10-25 08: 43: 34Z

Pakiet git zainstalowany w systemie zawiera pliki bash, które pomagają w tworzeniu zachęty informacyjnej. Aby utworzyć kolory, należy wstawić sekwencje ucieczki terminów do monitu. Ostatnim składnikiem jest zaktualizowanie zachęty po wykonaniu każdego polecenia przy użyciu wbudowanej zmiennej PROMPT_COMMAND.

Edytuj swój plik ~ /.bashrc, aby zawierał następujące elementy i powinieneś otrzymać monit w swoim pytaniu, modulo niektóre różnice kolorów.

 
#
# 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}\u@\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
    
2
2013-06-27 05: 26: 35Z

Istnieje wiele generatorów PS1, ale ezprompt ma również status git (druga karta„ Elementy statusu ”).

    
1
2019-02-28 10: 14: 20Z

Opierając się na odpowiedzi 6LYTH3, postanowiłem opublikować własne z powodu pewnych ulepszeń, które mogą się przydać:

Proste rozwiązanie

Otwórz ~/.bash_profile i dodaj następującą treść

 
# \[\e[0m\] resets the color to default color
reset_color='\[\e[0m\]'
#  \[\033[33m\] sets the color to yellow
path_color='\[\033[33m\]'
# \e[0;32m\ sets the color to green
git_clean_color='\[\e[0;32m\]'
# \e[0;31m\ sets the color to red
git_dirty_color='\[\e[0;31m\]'

# determines if the git branch you are on is clean or dirty
git_prompt ()
{
  # Is this a git directory?
  if ! git rev-parse --git-dir > /dev/null 2>&1; then
    return 0
  fi
  # Grab working branch name
  git_branch=$(git branch 2>/dev/null| sed -n '/^\*/s/^\* //p')
  # Clean or dirty branch
  if git diff --quiet 2>/dev/null >&2; then
    git_color="${git_clean_color}"
  else
    git_color="${git_dirty_color}"
  fi
  echo " [$git_color$git_branch${reset_color}]"
}

export PS1="${path_color}\w\[\e[0m\]$(git_prompt)\n"

To powinno:

 
1) Prompt the path you're in, in color: path_color.
2) Tell you which branch are you.
3) Color the name of the branch based on the status of the branch with git_clean_color 
for a clean work directory and git_dirty_color for a dirty one.
4) The brackets should stay in the default color you established in your computer.
5) Puts the prompt in the next line for readability.

Możesz dostosować kolory za pomocą tego lista

Wyrafinowane rozwiązanie

Inną opcją jest użycie Git Bash Prompt, zainstaluj z to . Użyłem tej opcji przez Homebrew na Mac OS X.

git_prompt_list_themes, aby zobaczyć motywy, ale nie podobało mi się żadne z nich.

git_prompt_color_samples, aby zobaczyć dostępne kolory.

git_prompt_make_custom_theme [<Name of base theme>], aby utworzyć nowy motyw niestandardowy, powinien utworzyć plik .git-prompt-colors.sh.

subl ~/.git-prompt-colors.sh, aby otworzyć git-prompt-colors.sh i dostosować:

Plik .git-prompt-colors.sh powinien wyglądać tak z moim dostosowaniem

 
    override_git_prompt_colors() {
      GIT_PROMPT_THEME_NAME="Custom"

      # Clean or dirty branch
      if git diff --quiet 2>/dev/null >&2; then
        GIT_PROMPT_BRANCH="${Green}"
      else
        GIT_PROMPT_BRANCH="${Red}"
      fi
    }

    reload_git_prompt_colors "Custom"

Mam nadzieję, że to pomoże, miłego dnia!

    
0
2019-04-16 23: 19: 12Z
źródło umieszczone tutaj