终端提示中的当前git分支

时间:2017-12-18 10:14:26

标签: git terminal git-branch

我试图制作一个小工具(可能已经存在)来帮助处理来自终端的存储库和分支机构。

基本上,我们的想法是在提示符中包含分支的名称(类似于虚拟环境,它也会在提示符中显示当前环境)。

以下命令只提取当前所在分支的名称。

git branch | grep "*" | cut -c3-

将此包含在我的.bashrc文件中以修改PS1有效,但只会在控制台打开时更改提示。

我想每次更改文件夹cd my_foldercd ..时都更新提示,所以如果我转到另一个存储库,它会更新分支。

所以我为cd创建了一个别名,现在在执行cd后会附加这个小脚本。

但是,如果我使用git来更改分支,因为我没有更改文件夹,则提示不会立即更新。

我也可以为git创建一个别名,但我的印象是我改变了很多东西,也许这已经存在了。

为了避免重新发明轮子,这是否已经存在?使用它是个好主意吗?

由于

3 个答案:

答案 0 :(得分:0)

在〜/ .bashrc中添加此代码。添加之后不要忘记使用source命令。

function multi_array_search ($array, $search) {
    $result = [];

    foreach ($array as $key => $value) { //iterate over each array element
        foreach ($search as $k => $v) { //iterate over each search condition
            $operator = $v[0];
            $searchField = $v[1];
            $searchVal = $v[2];

            switch ($operator) {
                case '=':
                    $cond = ($value[$searchField] != $searchVal);
                    break;

                case '!=':
                    $cond = ($value[$searchField] == $searchVal);
                    break;

                case '>':
                    $cond = ($value[$searchField] <= $searchVal);
                    break;

                case '<':
                    $cond = ($value[$searchField] >= $searchVal);
                    break;

                case '>=':
                    $cond = ($value[$searchField] < $searchVal);
                    break;

                case '<=':
                    $cond = ($value[$searchField] > $searchVal);
                    break;
            }

            //if the array element does not meet the search condition then continue to the next element
            if ((!isset($value[$searchField]) && $value[$searchField] !== null) || $cond) {
                continue 2;
            }
        }
        $result[] = $key; //add the array element's key to the result array
    }
    return $result;
}

    //incoming data:
    $phonesList = [
        0 => [
            'Manufacturer' => 'Apple',
            'Model' => 'iPhone 3G 8GB',
            'Carrier' => 'AT&T',
            'Cost' => 100000
        ],
        1 => [
            'Manufacturer' => 'Motorola',
            'Model' => 'Droid X2',
            'Carrier' => 'Verizon',
            'Cost' => 120000
        ],
        2 => [
            'Manufacturer' => 'Motorola',
            'Model' => 'Droid X2',
            'Carrier' => 'Verizon',
            'Cost' => 150000
        ]
    ];

    var_dump(multi_array_search($phonesList, 
                             [ ['=', 'Manufacturer', 'Motorola'], 
                               ['>', 'Cost', '130000'] ]
            ));

   //output:
   array(1) { [0]=> int(2) }

希望这可能会有所帮助。

答案 1 :(得分:0)

首先检查您是否在Git存储库中,然后使用symbolic-ref命令进行提取:

function gitbranch
{
    if git rev-parse --git-dir &>/dev/null; then
        printf "%s" "[$( git symbolic-ref HEAD --short )]"
    fi
}
export PS1="\u@\h \[\033[32m\]\w\[\033[33m\]\$(gitbranch)\[\033[00m\] $ "

将其添加到.bashrc文件中。

答案 2 :(得分:0)

尝试一下

=>克隆存储库,如下所示:

        while (driver.FindElements(By.ClassName("more")).Count > 0)
        {
            driver.FindElement(By.ClassName("more")).Click();
            //Some delay to wait lazyload to complete 
        }

=>安装

git clone --depth=1 https://github.com/Bash-it/bash-it.git ~/.bash_it

=>重新打开终端