17

我有一个裸存储库和两个工作副本——一个在我的机器上,另一个在服务器上。
事实证明,我必须有.gitignore一个特定于每台机器的文件。我们称之为' settings.py'。此文件已提交。

我确实settings.py在 .gitignore 中放入了 ' ' 以忽略它。当我现在更改机器上的文件时,git status 仍然告诉我

modified:  settings.py

我发现我必须像这样删除 settings.py :

git rm --cached settings.py

然后git add .,紧随其后git commit

但是,当我现在将它推送到裸仓库并将其拉到服务器上的工作副本时,settings.py会在那里被删除 - 这很糟糕,因为我必须保留这个特定settings.py的 .

我想我可以复制一份settings.py并在它被删除后放回去,但我觉得必须有更好的方法来做到这一点。

4

2 回答 2

9

您可以告诉 git 完全忽略对跟踪文件的更改,而不必删除它们。使用这个命令:

git update-index --assume-unchanged [FILENAME]

然后,如果您想稍后跟踪文件:

git update-index --no-assume-unchanged [FILENAME]
于 2010-10-20T15:56:30.843 回答
7

您能否将 settings.py 永久删除(本地和远程),并且:

  • 版本setting_remote远程端的文件
  • 本地版本的setting_local文件(即具有本地特定设置)
  • 添加能够在结帐时重建正确文件的过滤器驱动程序。settings.py

替代文字

这样,settings.py保持“私有”(非版本化)。但是每个环境的特定值都是版本化的,每个都设置在自己的文件中,没有任何合并问题。

于 2010-09-30T18:59:43.773 回答