Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
停止git更新远程文件_Git_Github_Gitignore - Fatal编程技术网

停止git更新远程文件

停止git更新远程文件,git,github,gitignore,Git,Github,Gitignore,我得到了一个git存储库,在那里我得到了几个文件。(实际上它是我的存储库) 在这个存储库中有一个文件,我想保存在GitHub remote中,但我不想让git更新它,即使这个文件在本地更改。我还希望在克隆此存储库的每台计算机上自动执行此操作 所以基本上这些步骤: 创建文件并添加初始内容(v1) 提交并将文件推送到远程分支 做一些事情,让git忽略每台机器上对此文件的所有更改 更改文件内容(v2) 现在,我在远程(v1)和本地(v2)中获得了该文件,但是当我运行git status时,我不想看到

我得到了一个git存储库,在那里我得到了几个文件。(实际上它是我的存储库)

在这个存储库中有一个文件,我想保存在GitHub remote中,但我不想让git更新它,即使这个文件在本地更改。我还希望在克隆此存储库的每台计算机上自动执行此操作


所以基本上这些步骤:

  • 创建文件并添加初始内容(v1)
  • 提交并将文件推送到远程分支
  • 做一些事情,让git忽略每台机器上对此文件的所有更改
  • 更改文件内容(v2)
  • 现在,我在远程(v1)和本地(v2)中获得了该文件,但是当我运行
    git status
    时,我不想看到关于该文件的任何内容。另外,如果我将此存储库(带有文件v1)克隆到另一台机器上并对该文件(现在是v3)进行更改,我不希望在另一台机器上的
    git状态中看到有关此文件的任何内容

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


    首先,我尝试将它添加到.gitignore并运行
    git rm--cached myfile
    ,但是git也想从远程删除这个文件

    我尝试了使用
    git更新索引——假设myfile未更改
    。从技术上讲,它满足了我的要求,但不是在所有其他机器上,因为它只影响我的本地git存储库


    是否有一种方法可以完成步骤3中必须完成的工作?

    您问的是如何忽略对跟踪文件的更改,答案是Git不会这样做。从:

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

    尝试使用
    git update index
    的某些功能很有诱惑力,即假定未更改和跳过工作树位,但这些功能不能正常工作,不应以这种方式使用


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

    请尝试回答谢谢您的快速回答。但是我必须在我将存储库克隆到的每台机器上执行
    git update index--skip worktree myfile
    ,以便能够对那里的文件进行更改,而git忽略它。是否有办法将此信息也推送到远程?