Git状态-当我执行'git status'命令时如何排除不需要的文件夹内容以显示

Raj*_*Raj 7 git gitignore git-status

我试图避免在执行“ git status”命令时显示不需要的文件夹内容(例如:.settings,.metadata等)。我在添加文件夹名称之后修改了.gitignore文件,但是当我执行git status时,仍然得到所有这些文件。

请帮我。

gal*_*lva 6

grep -v如果您只是有兴趣看不到它们,则可以删除它们。


roh*_*t89 5

.gitignore 仅适用于未跟踪的文件。

要停止跟踪 git 中已跟踪的文件,请键入

git rm --cached <file>
git rm -r --cached <folder>
Run Code Online (Sandbox Code Playgroud)

然后提交更改

git commit -m "Stop tracking some files"
Run Code Online (Sandbox Code Playgroud)


Tha*_*ais 5

我不会回应其他人对它的使用的说法,.gitignore因为我相信他们已经涵盖了它,但是我喜欢您关于省略来自的结果的问题git status

除了指定您想要状态的子目录(即当前目录为默认目录)之外,我没有找到其他方法来省略特定目录git status <subdirectory>

在某些情况下,这取决于项目的组织方式是不够的。例如,在Go中使用时dep,有一个vendor要检入的目录,可能希望仅排除该目录,但是我能做的最好是git status在一系列子目录上(不好玩)。同样适用git diff


wiz*_*z94 5

从 git 项目目录运行它,其中dir是您要排除的目录。

git status . -- ':!dir'
Run Code Online (Sandbox Code Playgroud)

对于您的示例,如果要排除多个目录(例如settingsmetadata)。

git status . -- ':!settings' ':!metadata'
Run Code Online (Sandbox Code Playgroud)


Vam*_*ire 0

.gitignore相关设施仅适用于未跟踪的文件。一旦文件被跟踪(添加到 Git),您就可以将其放入.gitignore,但它根本没有任何效果。除了从存储库中删除这些文件并不将它们签入之外,没有什么好的方法可以处理这个问题。

您可能会阅读有关 的内容--assume-unchanged,但这是一个非常危险的选择。您可以告诉 Git 假设文件未更改,即使您对文件进行了更改。但这也意味着确保您不会丢失未提交的更改的安全机制不适用于这些文件。因此,如果您进行了更改.settings,然后切换到签入文件与.settings当前所在分支不同的分支,则该文件将被新分支的状态覆盖,并且您的本地更改将丢失。