Подтвердить что ты не робот

Изменить Git приглашение на Windows

Я использую Git в Windows, установленный через GitExtensions с MSysGit (последний), выбрав во время установки "не изменять приглашение для Windows".

Теперь я хотел бы иметь возможность изменять приглашение по умолчанию (которое по умолчанию показывает только название ветки, чтобы также показать мне, сколько времени и сколько локальных коммитов с тех пор, как я последний раз нажал на origin (или специально origin/master, в зависимости от того, что проще).

Так скажите вместо: [email protected] /c/myRepo (master)

Я бы увидел что-то по строкам: [email protected] /c/myRepo (master) 5 | 10:20

что означает, что я последний раз нажал 10 часов 20 минут назад, и с тех пор я сделал 5 локальных коммитов.

Прежде чем упомянуть об этом, я знаю, что есть способы сделать это с помощью PowerShell, но я не хочу его использовать. Мне нужен мой стандарт Git bash, который мы все знаем и любим.

Я нашел несколько решений для этого: с изменением переменной PS1 в файле .bashrc, но (извините за мой плохой Unix konwledge) они, похоже, не работают (например, принятый ответ этот вопрос.)

Итак, у вас это есть. Возможно ли это?

4b9b3361

Ответ 1

По умолчанию git -completion script поддерживает часть того, что вам нужно. Если вы установите GIT_PS1_SHOWUPSTREAM = "verbose git" в файле /etc/profile, то он добавит количество коммитов, которые будут впереди вашего восходящего ветки, в приглашение. Возможно, вам нужно будет установить приглашение, как показано ниже, чтобы включить (%s) в git конкретную часть:

export PS1='\[\033]0;$MSYSTEM:\w\007
\033[32m\]\[email protected]\h \[\033[33m\w$(__git_ps1 " (%s)")\033[0m\]
\$ '

Для части времени - это ново для меня. Но git - bash должен обрабатывать любую версию unix, которую вы, возможно, нашли. Просто отредактируйте /etc/profile как администратор (на самом деле %PROGRAMFILES%\Git\etc\profile или создайте файл ~/.profile, содержащий следующее:

GIT_PS1_SHOWDIRTYSTATE=1
GIT_PS1_SHOWUPSTREAM='verbose git'
export GIT_PS1_SHOWDIRTYSTATE GIT_PS1_SHOWUPSTREAM

с установленными этими переменными окружения, по умолчанию запрос msysGit выглядит так, если у вас есть грязное дерево с 1 фиксацией перед началом:

[email protected] /c/src/msysgit (devel * u+1)
$ git status --short --branch
## devel...origin/devel [ahead 1]
 M doc/git/html
 M etc/inputrc

Ответ 2

Шаг 1. Скопируйте эти два файла в домашнюю папку, вы можете найти их в разделе% PROGRAMFILES%\ Git\etc \;

git-completion.bash
git-prompt.sh

Шаг 2. Конфигурируйте свой PS1 в своем профиле bash, например .bashrc, например:

. git-completion.bash
. git-prompt.sh
GIT_PS1_SHOWDIRTYSTATE=true
PS1='\w\[\033[01;32m\]$(__git_ps1)\[\033[00m\]\$ '

Ответ 3

Функция __git_ps1 определена в /git/config/completion/git-completion.bash изнутри mingw bash. Вы должны иметь возможность копировать эту функцию в свой собственный .bashrc и редактировать ее по своему усмотрению.

FWIW Я решил пропустить __git_ps1 и свою собственную вещь с цветом. Вот код подсказки из моего .bashrc:

DEFAULT_COLOR='\[\e[0m\]'
BLACK='\[\e[0;30m\]'
LTBLUE='\[\e[1;34m\]'
LTRED='\[\e[1;31m\]'

USER_COLOR=$LTBLUE
GIT_CHANGE_COLOR=$LTRED
GIT_NO_CHANGE_COLOR="$BLACK"

gitPrompt() {
  local gitPrompt=$(__git_ps1)
  local gitColor="$GIT_NO_CHANGE_COLOR"
  if [ -n "$gitPrompt" ]; then
    branch=$(git symbolic-ref HEAD 2>/dev/null)
    if [ "$gitPrompt" != " (${branch##refs/heads/})" ]; then
      gitColor="$GIT_CHANGE_COLOR"
    fi
  fi
  echo "$USER_COLOR\[email protected]\h:\W$gitColor$gitPrompt$DEFAULT_COLOR$ "
}

PROMPT_COMMAND='PS1="$(gitPrompt)"'

Выражение в PROMPT_COMMAND оценивается каждый раз, когда выводится приглашение.

Чтобы делать то, что вы хотите, вам, вероятно, придется проанализировать reflog с чем-то вроде awk или perl и добавить его после имени ветки. Я обычно полагаюсь на gitk, чтобы визуализировать информацию, которую вы ищете.

Ответ 4

Если вы запустите GitPortable для Windows, вы можете сделать этот трюк, взятый из этого сайта

Напишите $ nano ~/.bashrc в gitportable console. После того, как вы сделали редактирование, напишите $ source ~/.bashrc, чтобы перезагрузить настройки. Моя установка сохраняет файл в папке C:\apps\GitPortable\Data\home.

# Git-friendly prompt showing dirty state
# http://stackoverflow.com/info/10133173/alter-git-prompt-on-windows

shopt -s promptvars
export GIT_PS1_SHOWDIRTYSTATE=1
export GIT_PS1_SHOWUPSTREAM='verbose git'
export PS1='\[\033[1;36m\]\[\033[0m\]\[\033[1;34m\]\w\[\033[0m\] 
\[\033[1;32m\]$(__git_ps1)\[\033[0m\]\$ '

# Enable color support of ls
alias ls='ls --color=auto -alhX'