停止Git更新远程文件 [英] Stop git from updating remote file

查看:0
本文介绍了停止Git更新远程文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个Git存储库,其中有几个文件。(实际上是我的Advent of Code存储库)

在这个存储库中有一个文件,我希望将其保留在GitHub远程服务器中,但我不希望Git更新它,即使该文件在本地更改。此外,我还希望在我将此存储库克隆到的每台计算机上自动执行此行为。


所以基本上这些步骤:

  1. 创建文件并添加初始内容(V1)
  2. 提交并将文件推送到远程分支
  3. 执行一些操作,让Git忽略每台计算机上对此文件的所有更改
  4. 更改文件内容(V2)
现在,我在远程(V1)和本地(V2)中获得了该文件,但是当我运行git status时,我不想看到有关该文件的任何内容。此外,如果我将此存储库(具有文件v1)克隆到另一台计算机,并对该文件(现在的v3)进行更改,我不希望在git status中看到关于另一台计算机上的此文件的任何内容。

提供一个示例:我想将包含会话Cookie的文件添加到GitHub。显然,我不想将我的会话cookie推送到GitHub,只是想要一个占位符之类的东西。但是当我运行程序时,它必须包含正确的会话cookie,所以我必须用实际的cookie更新文件。现在,我不希望Git将此文件更新到GitHub。当我将这个存储库克隆到另一台计算机时,我希望它包含占位符,就像在遥控器中一样,然后我可以手动更新它。此外,Git也不应该希望从此计算机更新文件。


首先我尝试将其添加到.gitignore并运行git rm --cached myfile,但随后Git也想从远程删除此文件。

我尝试使用git update-index --assume-unchanged myfile。从技术上讲,它可以执行我想要的操作,但不是在所有其他计算机上,因为它只影响我本地的Git存储库。

是否有方法可以完成步骤3中必须完成的任务?

推荐答案

您问的是如何忽略对跟踪文件的更改,而答案是Git不会这样做。来自entry in the Git FAQ

Git不提供这样做的方法。原因是,如果Git需要覆盖此文件,例如在签出期间,它不知道对文件的更改是宝贵的,应该保留,还是不相关的,可以安全地销毁。因此,它必须选择安全的路线,并始终保存它们。

很容易尝试使用git update-index的某些功能,即假定不变和跳过工作树位,但这些位不能正常工作,因此不应以这种方式使用。

任何类型的秘密都应该通过环境或配置文件传递。为此目的创建一个模板并将其签入,然后使用脚本将其复制到忽略的位置,这样您就可以编辑它并添加秘密。对于大多数主要生产系统,机密通常通过环境传递,因此不会写入磁盘。

这篇关于停止Git更新远程文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆