当我执行git status命令时,我试图避免显示不需要的文件夹内容(例如:- .settings,.metadata等)。我修改了.gitignore文件,添加了文件夹名,但当我执行git status时,仍然得到了所有这些文件。
git status
az31mfrm1#
从git项目目录运行这个命令,其中dir是你想要排除的目录。
dir
git status . -- ':!dir'
例如,如果要排除多个目录(例如settings和metadata)。
settings
metadata
git status . -- ':!settings' ':!metadata'
nkoocmlb2#
.gitignore仅适用于未跟踪的文件。要停止在git中跟踪已跟踪的文件,输入
.gitignore
git rm --cached <file> git rm -r --cached <folder>
然后提交更改
git commit -m "Stop tracking some files"
z4iuyo4d3#
如果你只是不想看到它们,你可以用grep -v删除它们。
grep -v
kx7yvsdv4#
我不会附和其他人关于.gitignore的用法的说法,因为我相信他们已经涵盖了它,但我喜欢你关于省略git status结果的问题。我发现没有办法省略特定的目录,除了指定你想要状态的子目录,即git status <subdirectory>,其中当前目录是默认的。在某些情况下,这是不够的,这取决于项目的组织方式。例如,在Go中使用dep时,有一个vendor目录被检入,并且只排除它是可取的,但我能做的最好的是在一系列子目录上git status(不好玩)。git diff也是如此。
git status <subdirectory>
dep
vendor
git diff
nnt7mjpx5#
根据git词汇表pathspec,如果你想快速查看除**/settings/以外的所有文件夹的更改,下面是方法
pathspec
**/settings/
git status ':(exclude,top)**/settings/*' ./
dgjrabp26#
我还没有找到一个通用的解决方案来解决这个问题,只使用git status命令。然而,对于在Golang项目上开发的排他性场景,你想排除/vendor,我通常会附加'|grep -v vendor'到git状态。
cuxqih217#
.gitignore和相关工具只对未跟踪的文件起作用。一旦文件被跟踪(添加到Git),您可以将其放入.gitignore中,但它根本不会起作用。除了从存储库中删除这些文件并使其不签入之外,没有好的方法来处理这个问题。你可能读到过--assume-unchanged,但这是一个非常危险的选择。你可以告诉Git假设一个文件没有改变,但这也意味着确保您不会丢失未提交更改的安全机制对这些文件不起作用。因此,如果您有一个已更改的.settings,然后切换到一个分支,其中检入的.settings文件与您当前所在的分支上的文件不同,文件将被新分支的状态覆盖,并且本地更改将丢失。
--assume-unchanged
.settings
7条答案
按热度按时间az31mfrm1#
从git项目目录运行这个命令,其中
dir
是你想要排除的目录。例如,如果要排除多个目录(例如
settings
和metadata
)。nkoocmlb2#
.gitignore
仅适用于未跟踪的文件。要停止在git中跟踪已跟踪的文件,输入
然后提交更改
z4iuyo4d3#
如果你只是不想看到它们,你可以用
grep -v
删除它们。kx7yvsdv4#
我不会附和其他人关于
.gitignore
的用法的说法,因为我相信他们已经涵盖了它,但我喜欢你关于省略git status
结果的问题。我发现没有办法省略特定的目录,除了指定你想要状态的子目录,即
git status <subdirectory>
,其中当前目录是默认的。在某些情况下,这是不够的,这取决于项目的组织方式。例如,在Go中使用
dep
时,有一个vendor
目录被检入,并且只排除它是可取的,但我能做的最好的是在一系列子目录上git status
(不好玩)。git diff
也是如此。nnt7mjpx5#
根据git词汇表
pathspec
,如果你想快速查看除**/settings/
以外的所有文件夹的更改,下面是方法dgjrabp26#
我还没有找到一个通用的解决方案来解决这个问题,只使用git status命令。然而,对于在Golang项目上开发的排他性场景,你想排除/vendor,我通常会附加'|grep -v vendor'到git状态。
cuxqih217#
.gitignore
和相关工具只对未跟踪的文件起作用。一旦文件被跟踪(添加到Git),您可以将其放入.gitignore
中,但它根本不会起作用。除了从存储库中删除这些文件并使其不签入之外,没有好的方法来处理这个问题。你可能读到过
--assume-unchanged
,但这是一个非常危险的选择。你可以告诉Git假设一个文件没有改变,但这也意味着确保您不会丢失未提交更改的安全机制对这些文件不起作用。因此,如果您有一个已更改的.settings
,然后切换到一个分支,其中检入的.settings
文件与您当前所在的分支上的文件不同,文件将被新分支的状态覆盖,并且本地更改将丢失。