如何阻止Git跟踪此提交文件中的任何更改?

我有一个数据库configuration文件具有不重要的默认值。 但是,对此文件的任何更改都将包含敏感信息,这些信息不应在回购中进行跟踪。

我希望将来的Git仓库拉到包括默认的版本,但忽略任何用户所做的任何更改。

以下内容保持本地configuration,但将删除操作推向回购站,导致未来的回收问题。

cat "app/dir/config.file" >> .gitignore git rm --cached app/dir/config.file 

下面的工作,但不坚持过去的回购。

 git update-index --assume-unchanged app/dir/config.file 

这似乎是围绕敏感信息进行版本控制的常见要求,但似乎无法find解决scheme。

像往常一样,github在这方面有一个很好的文档。

https://help.github.com/articles/ignoring-files#ignoring-versioned-files

以下是相关的代码片段:

忽略版本化的文件

存储库中的某些文件经常更改,但很less提交。 通常,这些都是编辑的各种本地configuration文件,但不应该在上游提交。 Git让你忽略这些文件,假设它们没有改变。

  1. 在terminal中,导航到你的Git仓库的位置。
  2. 在terminal中运行以下命令:

git update-index --assume-unchanged path/to/file.txt

一旦你像这样标记一个文件,Git完全忽略它的任何改变。 运行git statusgit diff ,它永远不会显示,也不会被提交。

要让Git重新跟踪文件,只需运行:

git update-index --no-assume-unchanged path/to/file.txt

不知道这是否是“最好”的方式,但我发现工作需要几个步骤。

新的Laravel例子:

  1. git init
  2. 调整.gitignore文件以获得所需的结果,例如不丢失供应商文件夹。
  3. 制作您不想跟踪的文件的副本(例如:.htaccess,.env等)
  4. git add .
  5. git commit -m "first commit"
  6. git rm --cached public /.htaccess然后git rm --cached .env
  7. git commit
  8. git status应该显示这些文件被删除。
  9. 现在把你复制的文件放回去。 由于它们和你告诉git从跟踪中删除的名字相同,所以git现在将完全忽略这些文件。

现在可以对其进行编辑,并且可以拥有本地版本和生产版本。 注意:您也可能必须在生产设置中第一次重复所有这些步骤。 到目前为止,这对我来说工作得很好。