即使在“ .gitignored”文件夹中时,“ git branch”输出结果

时间:2019-01-19 14:11:55

标签: bash git gitignore prompt

我正在尝试将当前检出的分支解析到bash提示符中。在PS1中使用以下bash函数,这非常容易:

class GenericQuestion<T extends Number> implements Iterable<T> {
    List<? extends T> numbers;

    GenericQuestion(List<? extends T> number) {
        this.numbers = number;
    }

    public Iterator<T> iterator() {
        return new Iterator<T>() {
            Iterator<? extends T> iter = numbers.iterator();
            public boolean hasNext() {
                return iter.hasNext();
            }

            public T next() {
               return iter.next();
            }

            public void remove() {
                iter.remove();
            }
        };
    }

    static void main() {
        for (Number n : new GenericQuestion<Number>(new ArrayList<Integer>())) {
            System.out.println(n.byteValue());
        }
    }
}

当提示仍然显示parse_git_branch() { git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/' } export PS1="\[$(tput setaf 3)\]\u\[$(tput setaf 2)\]@\[$(tput setaf 4)\]\h \[$(tput setaf 5)\]\w\[$(tput setaf 7)\]\[$(tput setaf 3)\]\$(parse_git_branch) \[$(tput setaf 7)\]\\$ \[$(tput sgr0)\]" 文件内文件夹中的“已签出”分支时,出现了我的问题。 例如: 假设.gitignore是我的存储库的根目录,由git跟踪(例如:找到/home/rbroggi/workspace/project_one文件夹的位置)。在此存储库中,我有一个.gitignore文件.git,其中包含以下记录: /home/rbroggi/workspace/project_one/.gitignore。一旦将目录更改为ignoredfolder/,我将假设git branch的输出/结果为空,但它将继续输出我在父文件夹中检出的分支。这很烦人,也许如果我对命令ignoredfolder的工作方式有了解,就可以避免获取忽略文件夹的输出。

git branch

感谢您抽出宝贵的时间来尝试和帮助我。

Rodrigo Broggi

1 个答案:

答案 0 :(得分:0)

您假设可以以不同的方式签出工作树的不同部分。那是不对的。

(您可以使用git checkout更新特定的工作树文件以匹配来自另一次提交的版本,但这不会更改检出的版本;这仅意味着您尚未提交对该文件的更改,这如果提交,将导致该文件与其他提交的版本匹配。)

为整个存储库签出给定的分支(或在分离的头状态下为给定的提交)。 .gitignore与此无关,无论您在工作树中的位置如何,都将是相同的。如果您发现cd ing似乎更改了您所在的分支的情况,那是因为您已经更改了您所在的工作树。