我正在尝试将当前检出的分支解析到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
答案 0 :(得分:0)
您假设可以以不同的方式签出工作树的不同部分。那是不对的。
(您可以使用git checkout
更新特定的工作树文件以匹配来自另一次提交的版本,但这不会更改检出的版本;这仅意味着您尚未提交对该文件的更改,这如果提交,将导致该文件与其他提交的版本匹配。)
为整个存储库签出给定的分支(或在分离的头状态下为给定的提交)。 .gitignore
与此无关,无论您在工作树中的位置如何,都将是相同的。如果您发现cd
ing似乎更改了您所在的分支的情况,那是因为您已经更改了您所在的工作树。