如何将Git推送到临时服务器并排除一个文件

如何将Git推送到临时服务器并排除一个文件,git,Git,在我的应用程序中,确实有一个server.inc文件,其中包含一个switch语句$server=1,用于指定安装应用程序的服务器 现在,每当我将git推送到staging或production时,该文件也会被传输,我必须手动更新整个集群上的变量 我知道我可以简单地从git中排除这个文件,但那样的话,我就不会对它进行版本控制了 我怎样才能克服这个问题?有没有办法从钩子或类似的东西中排除安全文件 提前感谢您在这方面的帮助。在这种情况下,通常的方法是使用名为server.inc.example或se

在我的应用程序中,确实有一个server.inc文件,其中包含一个switch语句
$server=1
,用于指定安装应用程序的服务器

现在,每当我将git推送到staging或production时,该文件也会被传输,我必须手动更新整个集群上的变量

我知道我可以简单地从git中排除这个文件,但那样的话,我就不会对它进行版本控制了

我怎样才能克服这个问题?有没有办法从钩子或类似的东西中排除安全文件


提前感谢您在这方面的帮助。

在这种情况下,通常的方法是使用名为
server.inc.example
server.inc.template
的文件复制此文件-任何让您认为它是文档而不是实际生产文件的内容。然后提交
server.inc.example
并从存储库中删除原始
server.inc
,同时将其(
server.inc
)添加到
.gitignore
。现在,您只需最后一次遍历集群,并在其中设置具有所需值的
server.inc
文件(或设置一些部署挂钩,YMMV)。

不可能从推送中排除单个文件,因为git推送使用的是提交而不是单个文件。添加/提交文件后,将推送该文件

不过,您可以做一些变通,强制git将文件标记为未更改或随意更改。这样,您可以编辑内容,但告诉git不要跟踪更新:

git update-index --assume-unchanged <file>

git update-index --no-assume-unchanged <file>
git更新索引--假定未更改
git更新索引——无假设不变

工作正常!非常感谢。