【问题标题】:How to check for the presence of a git repository in a directory using bash script如何使用 bash 脚本检查目录中是否存在 git 存储库
【发布时间】:2016-04-03 07:56:47
【问题描述】:

我正在尝试在我的项目中使用 git。

我想设置终端,这样每当我 cd 进入包含 git 项目的目录时,终端应该指示我当前所在的 git 分支。

如果有git项目,终端只显示分支名称, 例如

(master) $

否则它应该显示当前目录路径。即

username@machinename:path/to/directory $

我发现回答了here 的类似问题,但我不知道如何修改答案以满足我的需要,因为我不擅长 bash 脚本。 任何建议都将受到高度赞赏。

【问题讨论】:

    标签: linux git bash


    【解决方案1】:

    看看这个项目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 分支名称,然后您可以在 PS1 中将其用作变量。然后,您可以将现有的 PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' 更新为

    PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w \(\$git_branch\)\$ '
    

    【讨论】:

    【解决方案2】:

    你有很多工具可以做到这一点。

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

    【讨论】:

      【解决方案3】:

      Linux 中的 Git 包通常带有一个prompt script,您可以使用它来查看存储库状态。要启用它,请在 shell 启动文件(例如 ~/.bashrc)中获取 git-prompt.sh 脚本,然后使用 %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 存储库的目录时,提示将更改为显示分支名称。额外的细节可以设置为由提示显示(见上面的链接)。

      【讨论】:

        猜你喜欢
        • 2020-11-05
        • 1970-01-01
        • 2011-01-11
        • 2022-11-23
        • 1970-01-01
        • 2014-04-22
        • 2015-09-13
        • 2015-07-07
        • 1970-01-01
        相关资源
        最近更新 更多