31

我初始化了git存储库并进行了第一次提交。现在,我在这个目录中运行./configure./make all以便它填充许多不想跟踪的额外文件/文件夹。

我想做的是将所有这些未跟踪的文件一劳永逸地添加到我的 gitignore 中。有什么简单的方法吗?

我可以摆脱一些不必要的文件,例如*.o*.mod通过在 .gitignore 中指定适当的行,但这并不能解决问题。

4

4 回答 4

48

试试这个:

git status -s | grep -e "^\?\?" | cut -c 4- >> .gitignore

说明:git status -s给你一个简短的状态版本,没有标题。grep只接受以 开头的行,??即未跟踪的文件,cut删除??,其余的将其添加到.gitignore文件中。

于 2013-04-07T12:58:27.720 回答
12

一个更简单的命令是

git ls-files --others --exclude-standard >> .gitignore

您可能想要编辑结果以用通配符替换重复的模式。

于 2016-01-10T17:50:19.140 回答
1

如果您的工作树除了未跟踪的文件/文件夹之外是干净的,则可以使用更短的解决方案awk

git status -s | awk '{print $2}' >> .gitignore
于 2020-03-21T11:38:24.970 回答
0

在接受的答案中, grep 部分导致了我的问题(即没有过滤,而是显示了所有行,包括以M(modified) 开头的行),并替换"^\?\?""^??"我解决了它。我在 win 10 上并在 msys2 的 bash 中使用它。

于 2021-12-13T10:46:51.737 回答