只在git存储库中包含一次文件

Alf*_*red 3 git

我有这个文件.让我们说x这个例子里面的文件夹y.我想在目录中放置一个存根(PS:我相信这个github项目实际上是我想要的),但只有一次.对于此示例,它看起来像这样:

module.exports.id = "";
module.exports.secret = "";
module.exports.callback = "";
Run Code Online (Sandbox Code Playgroud)

不应该共享这些值,这就是为什么我只想将文件(存根/空)放入存储库中一次.

当我x再次修改时,不应将更改放在git存储库中,而只应放在目录内y.

我希望我有道理,这也不是一个重复的问题.如果是这种情况,我很想知道讨论这个的stackoverflow主题,以便我可以关闭这个主题.

Mar*_*kus 5

我通过以下方式解决它:我将文件重命名xx-default并设置git以忽略该文件x(例如.gitignore,在dir中的a y).签出仓库的每个用户都必须将签出的文件复制x-defaultx并设置其值.

这样做的好处是,x-default可以使用新值更新文件而不会出现问题(不会覆盖用户的配置),并且由于x被忽略,用户的值不会与其他用户的repos同步(如您所愿).

你的程序应该检查是否存在x,如果不存在,给出提示复制x-defaultx并配置它(或自动执行此操作).


编辑

这有效,但我相信它可以做得更干净.

取决于你想要什么.您也可以在本地仓库中使用它:

git update-index --assume-unchanged x
Run Code Online (Sandbox Code Playgroud)

因此,您提交文件一次,然后在不希望进一步更改的情况下对文件运行命令.这里的问题是,如果其他用户希望像你一样拥有它,那么其他用户将不得不做同样的事情,否则他们的更改将被提交(并将覆盖你的或者它将以合并冲突结束).

要撤消此操作,请转到

git update-index --no-assume-unchanged x
Run Code Online (Sandbox Code Playgroud)

我不知道其他解决方案,但可能是其他人.


编辑

PS:我相信这个github项目实际上是我想要的

这看起来更像是我的第一个答案!他们有一个文件,example_keys_file.js并在文件中.gitignore忽略keys_file.js.