有没有一种方便的方法可以忽略Git存储库中所有未跟踪的文件和文件夹?
(我知道 .gitignore
的存在。)
这样,git status
命令就会再次提供干净的结果。
我来这里是为了解决一个稍微不同的问题。也许对其他人有用:
我创建了一个新分支feature-a
。在这个分支中,我创建了新目录,并需要修改.gitignore文件以抑制其中一些目录。当向项目添加创建各种缓存文件的新工具时,这种情况经常发生。.serverless
,.terraform
等。
在我准备将其合并回主分支之前,我遇到了其他问题,因此我再次检出master
,但现在git status
再次捕获了那些被抑制的文件夹,因为.gitignore尚未合并。
这里的答案实际上很简单,尽管我不得不找到this blog才能弄清楚:
只需从feature-a
分支检出.gitignore文件即可。
git checkout feature-a -- feature-a/.gitignore
git add .
git commit -m "update .gitignore from feature-a branch"
echo "$(git status --porcelain | grep '^??' | cut -c4- | sed 's/^\"//;s/\"$//')" >> .gitignore
如果存在,删除开头和结尾的双引号,从而修复它。
虽然我不太擅长使用sed,但可能有更好的方法来解决这个问题或边缘情况。
*
很可能不是您想要的。 - sjas-u no
是错误的。-uno
是正确的。-u no
尝试对名为no
的文件执行状态操作!no
不是-u
的参数。要强制将no
解释为-u
的参数,就不能有空格。要测试这一点,请执行touch Invalid
并比较git status -uInvalid
和git status -u Invalid
。 - Aaron McDaid-uno
的no
应该是-u
的参数,因此认为 Git 的选项解析存在问题是合理的。从历史上看,通常带有参数的选项允许它们之间有空格。 - Mr. Lance E Sloan