在git的命令行中显示合并状态的方法

Sta*_*tec 3 git bash command-line .bash-profile

我目前已使用以下bash脚本配置了git,以显示我所在的分支(以及用于显示我所在目录的命令行):

export PS1="\[\033[36m\]\u\[\033[m\]@\[\033[32m\] \[\033[33;1m\]\w\[\033[m\] (\$(git branch 2>/dev/null | grep '^*' | colrm 1 2)) \$  \n$ "
export PS2="$ "
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种方法可以显示“正在合并”状态,以便在合并时merging在命令行中也显示该信息(在哪个分支上)。我已经在其他地方看到过这个,所以我很确定有可能,但是不知道如何。

Von*_*onC 5

您可以在此git-ps1脚本中看到一个更完整的状态指示器,其中包含重新设置和合并的内容。

local g="$(git rev-parse --git-dir 2>/dev/null)"
if [ -n "$g" ]; then
  local r
  local b
  if [ -d "$g/rebase-apply" ]
  then
    if test -f "$g/rebase-apply/rebasing"
    then
      r="|REBASE"
    elif test -f "$g/rebase-apply/applying"
    then
      r="|AM"
    else
      r="|AM/REBASE"
    fi
    b="$(git symbolic-ref HEAD 2>/dev/null)"
  elif [ -f "$g/rebase-merge/interactive" ]
  then
    r="|REBASE-i"
    b="$(cat "$g/rebase-merge/head-name")"
  elif [ -d "$g/rebase-merge" ]
  then
    r="|REBASE-m"
    b="$(cat "$g/rebase-merge/head-name")"
  elif [ -f "$g/MERGE_HEAD" ]
  then
    r="|MERGING"
    b="$(git symbolic-ref HEAD 2>/dev/null)"
Run Code Online (Sandbox Code Playgroud)

对于合并的一部分,它确实测试MERGE_HEAD文件,如建议通过Zeeker