我有这个文件。我们在文件夹x
中为此示例说y
。我想在目录中放置一个存根(P.S:我相信this github project实际上是我想要的),但只有一次。对于此示例,它看起来像这样:
module.exports.id = "";
module.exports.secret = "";
module.exports.callback = "";
不应该共享这些值,这就是为什么我只想将文件(存根/空)放在存储库中一次。
当我再次修改x
时,不应将更改放在git存储库中,而只应放在目录y
内。
我希望我有道理,这也不是一个重复的问题。如果是这种情况,我很想知道讨论这个的stackoverflow主题,以便我可以关闭这个主题。
答案 0 :(得分:5)
我通过以下方式解决:我将文件x
重命名为x-default
并将git设置为忽略文件x
(例如,通过目标中的.gitignore
y
)。签出回购的每个用户都必须将签出的文件x-default
复制到x
并设置其值。
这样做的好处是,文件x-default
可以使用新值更新而不会出现问题(不会覆盖用户的配置),并且由于x
被忽略,用户的值不会与之同步其他用户的回购(就像你想要的那样)。
您的程序应检查是否存在x
,如果没有,请提示将x-default
复制到x
并进行配置(或自动执行此操作)。
修改
这有效,但我相信它可以做得更干净。
取决于你想要什么。您也可以在本地仓库中使用它:
git update-index --assume-unchanged x
因此,您提交文件一次,然后在不希望进一步更改的情况下对文件运行命令。这里的问题是,如果其他用户希望像你一样拥有它,那么其他用户将不得不做同样的事情,否则他们的更改将被提交(并且将覆盖你的更改或者它将以合并冲突结束)。
要撤消此操作,请转到
git update-index --no-assume-unchanged x
我不知道其他解决方案,但可能是其他人。
修改
P.S:我相信这个github项目实际上是我想要的
这更像是我的第一个答案!他们有一个文件example_keys_file.js
,在文件.gitignore
中他们忽略了keys_file.js
。
答案 1 :(得分:2)
解决此问题的标准方法是:
template.ext.in
放入您的存储库template.ext.in
复制到template.ext
并修改值.gitignore
以确保它永远不会被提交。