【问题标题】:Git - Add files in ignored dir but still apply gitignore to the contentsGit - 在忽略的目录中添加文件,但仍将 gitignore 应用于内容
【发布时间】:2016-02-16 15:51:07
【问题描述】:

所以我环顾四周并了解如何将被忽略的目录添加到 git repo,但是在我看来,所有这些方法都会导致该目录中的每个文件都被添加,即使是那些仍然应该被忽略的文件。

例如我有一个名为 dir/ 的被忽略目录,我想将包含的源代码(.cpp 等)添加到 git repo,同时仍将 .gitignore 文件应用于该目录中的项目(即继续忽略 .o 文件等)。我认为应该起作用的命令是:

git add --all /path/to/dir/*

不过,这也会添加我仍然希望忽略的文件(.o 等)。

有人对此有任何想法吗?提前感谢您的帮助!

【问题讨论】:

标签: git gitignore


【解决方案1】:

这表示两件事之一:

  • 您的.gitignore 设置不正确
  • 您正试图追溯性地忽略该目录

man gitignore 这么说:

gitignore 文件指定了 Git 应该忽略的故意未跟踪的文件。 Git 已经跟踪的文件不受影响;有关详细信息,请参阅下面的注释。

gitignore 文件的目的是确保某些未被 Git 跟踪的文件保持未被跟踪。

要停止跟踪当前正在跟踪的文件,请使用 git rm --cached。

Stackoverflow上有一个问题给你一个更复杂的命令,但我认为接受的答案很危险,所以我不会链接到它

现在,.gitignore 未正确设置或应用您想要不跟踪的文件的最大迹象是 man git add

git add 命令默认不会添加被忽略的文件。如果在命令行上明确指定了任何被忽略的文件, git add 将失败并显示被忽略文件的列表。由 Git 执行的目录递归或文件名通配(在 shell 之前引用你的通配符)到达的忽略文件将被静默忽略。 git add 命令可用于添加带有-f(强制)选项的忽略文件。

【讨论】:

  • 这都是真的,我完全同意,但是在某些情况下(例如我正在处理一个嵌入式项目)您可能希望不忽略特定目录(例如嵌入式设备根文件系统将包含通常会被忽略的 .so 文件等,但在这种特定情况下,您希望将其添加到存储库中。
猜你喜欢
  • 1970-01-01
  • 2017-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-05
  • 2012-03-15
  • 2023-03-14
  • 2015-04-09
相关资源
最近更新 更多