【发布时间】:2020-12-11 16:29:14
【问题描述】:
我有一个 git 存储库,其中有几个文件。 (其实是我的Advent of Code 仓库)
在此存储库中有一个文件,我想保留在 GitHub 远程中,但我不希望 git 更新它,即使此文件在本地更改。此外,我希望在我将此存储库克隆到的每台机器上自动执行此行为。
所以基本上这些步骤:
- 创建文件并添加初始内容 (v1)
- 提交并将文件推送到远程分支
- 做一些事情,让 git 忽略每台机器上对该文件的所有更改
- 更改文件内容 (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 中必须完成的事情?
【问题讨论】:
-
试试this答案
-
感谢您的快速回答。但是我必须在我将存储库克隆到的每台机器上执行
git update-index --skip-worktree myfile,以便能够对那里的文件进行更改,并在那里忽略它。有没有办法将此信息也推送到遥控器?