是什么时候应用.gitignore?

时间:2016-10-29 13:59:14

标签: git versioning gitignore

让我们假设我想确保有一个名为foo的文件夹和一个名为bar的文件。在我确定foo / bar存在后,我不打算对它进行版本化,因此我将它添加到.gitignore。

防弹方法:

  • 创建foo
  • 创建foo / bar
  • 提交
  • 部署
  • 将foo添加到.gitignore
  • 提交
  • 部署

更短的方法:

  • 创建foo
  • 创建foo / bar
  • 提交
  • 将foo / bar添加到.gitignore
  • 提交
  • 部署

我想知道更短的方法是否可以保证创建文件夹,文件并忽略它。我做了一个测试,结果似乎证实了我的假设,即较短的方法也会在远程位置添加foo / bar,然后停止对其进行版本控制。这是适用于所有版本的规则吗?

1 个答案:

答案 0 :(得分:1)

正如评论者所指出的那样,如果你在提交文件之后将文件路径添加到.gitignore文件,那就太晚了。

你有两个不同的问题合二为一,在这里:

  1. 如何说服Git创建一个空目录? (这是你的实际问题,你需要解决的问题。)

  2. .gitignore如何实际运作?什么规则应用什么动作以及什么时候? (这就是你在主题行中提出的问题。)

  3. 对于第1项,请参阅How can I add an empty directory to a Git repository?

    对于第2项,请参阅https://git-scm.com/docs/gitignore。让我从那里提取这个句子,然后用粗体表示: Git已经跟踪的文件不受影响。如果你git add - 编辑了一条可以忽略的路径,那么不会被忽略。为了让成为被忽略,你必须明确删除它,它有自己的陷阱。请参阅How to stop tracking and ignore changes to a file in Git?How to make Git "forget" about a file that was tracked but is now in .gitignore?

    请注意,在处理意外跟踪的配置时,现在无法通过git update-index删除,现代建议为--skip-worktree,而不是--assume-unchanged