我正在尝试使用git处理我的项目。
我想设置终端,这样每当我cd
进入包含git项目的目录时,终端应该指出我当前在哪个git分支。
如果有一个git项目,终端只显示分支的名称, 例如
(master) $
否则它应该显示当前目录path.i.e
username@machinename:path/to/directory $
我发现类似的问题已经回答here,但我不知道如何修改答案以满足我的需要,因为我对bash脚本不好。 任何建议都将受到高度赞赏。
答案 0 :(得分:2)
看看这个项目https://github.com/jimeh/git-aware-prompt,它应该解决你的整个问题,如果没有,你可以改变它以满足你的需求。主要逻辑在prompt.sh。
要在目录中查找当前的git分支名称,您始终可以运行
git rev-parse --abbrev-ref HEAD
当目录不是git存储库的标准时,它将返回分支名称,HEAD(分离时)或什么都不返回。如果您只需要此信息,则可以更新.bashrc。编辑变量PS1,这是bash提示格式。
PS1='(`git rev-parse --abbrev-ref HEAD 2> /dev/null`) \$ '
这是如何在提示中的任何位置显示分支名称的示例。 git脚本将帮助您识别是否显示分支或目录。它将更新您的PROMPT_COMMAND,每次显示bash提示行时都会调用它,方法是检查git branch name,然后在PS1中将其用作变量。然后,您可以将现有的PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
更新为
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w \(\$git_branch\)\$ '
答案 1 :(得分:1)
Linux中的Git包通常附带一个prompt script,您可以使用它来查看存储库状态。要启用它,请在shell启动文件(例如git-prompt.sh
)中获取~/.bashrc
脚本,然后使用%s
参数设置自定义提示。例如,在ArchLinux中你可以这样做:
[ -r /usr/share/git/completion/git-prompt.sh ] && . /usr/share/git/completion/git-prompt.sh
PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ '
当更改为Git存储库的目录时,提示符将更改为显示分支名称。可以设置额外的详细信息以显示提示(请参阅上面的链接)。
答案 2 :(得分:0)
你有很多工具可以做到这一点。
例如 myzsh
或只是你添加到bashrc的简化bash
http://martinvalasek.com/blog/current-git-branch-name-in-command-prompt
示例:
function parse_git_branch () {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
RED="\[\033[0;31m\]"
YELLOW="\[\033[0;33m\]"
GREEN="\[\033[0;32m\]"
NO_COLOR="\[\033[0m\]"
PS1="$GREEN\u@\h$NO_COLOR:\w$YELLOW\$(parse_git_branch)$NO_COLOR\$ "