2010-09-30 120 views
17

我有一个裸仓库和两个工作副本 - 一个在我的机器上,另一个在服务器上。
事实证明,我必须.gitignore某个文件,必须为每台机器特定。我们称之为'settings.py'。这个文件已经提交。如何.gitignore并删除已提交的文件而不影响其他工作副本?

我确实在'gitignore中放入'settings.py'来忽略它。现在当我改变我的机器git的状态文件仍然告诉我

modified: settings.py 

我想通了,我不得不删除settings.py这样的:

git rm --cached settings.py 

然后git add .,其次是git commit

但是,当我现在推这到裸露的回购,并将其拉到服务器上的工作副本,settings.py被删除那里 - 这是不好的,因为我必须保持此特定settings.py

我想我可以制作settings.py的副本,并在删除后将其放回原处,但我觉得必须有更好的方法来做到这一点。

回答

8

你可以告诉git完全忽略对被跟踪文件的修改而不必删除它们。如果你想跟踪后文件

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

然后:

git update-index --no-assume-unchanged [FILENAME] 
使用此命令
7

你能保持相当永久settings.py删除(本地和远程),和:

  • 版本setting_remote文件远程端
  • 版本setting_local文件本地侧(即与本地特定设置)
  • 添加一个filter driver能够在结帐时重建正确的settings.py文件。

alt text

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

相关问题