我在git存储库中有一组要忽略的文件。
我知道最简单的解决方案:将它们全部手动添加到.gitignore
。
我不想忽略所有其他文件,因此path/*
不是一个选择。如果我能以某种方式使用path/*
,让git解析它,然后保存当前的“额外文件”,那将是完美的,但是就我而言,没有简单的方法可以做到这一点。 >
另一种选择是制作一个脚本,在git status
的未跟踪文件之后抓取文件名,然后将输出发送到.gitignore
,这可能是我最终要做的事情。
任何提示都值得赞赏。
相关但不是我的主要问题:git不包含git ignore
命令是有原因的吗?
答案 0 :(得分:2)
[一种]替代方法是制作一个脚本,在
git status
的未跟踪文件之后抓取文件名,然后将输出发送到.gitignore
,这可能是我最终要做的。
要编写脚本,请始终尝试使用管道命令。
使用git status
,有--porcelain
选项 1 可以将其转换为管道命令。考虑还使用git ls-files --others
(简称-o
),但请注意,您想添加--exclude-standard
选项。
相关但不是我的主要问题:git不包含
git ignore
命令是有原因的吗?
确切地定义它会做什么;写一个并提交,看看是否可以接受。 :-)
1 和往常一样,我对为什么不将此选项拼写为--plumbing
表示自己的困惑。
答案 1 :(得分:0)
肮脏的脚本会将所有未跟踪的文件添加到gitignore:
git status -s | awk '{ if ($1 == "??") print $2 }' >> .gitignore
以git status
的短格式,文件每行打印一次,没有起毛。第一列说明列出的文件的状态。具体来说,未跟踪的文件是??
。在git status --help
上阅读其他组合。
匹配第一列,并用awk打印第二列,我们将每行附加到.gitignore中。
可能有更好或更干净的解决方案,但这可行。
答案 2 :(得分:-1)
最后,您也可以排除所有内容,然后强行添加您想要的内容。
path/* # exclude all
!path/keep_this # but not this
!path/keep_that # and that