.gitignore - 将文件保存在GitHub上

时间:2016-08-17 12:35:46

标签: git

有很多这样的问题,但似乎都没有达到所需的解决方案。

如何在不提交给github的情况下忽略对本地文件的更改?示例:app / etc / local.xml

Github - 具有正确的local.xml,不应该被覆盖! 我有一个包含app / etc / local.xml的本地.gitignore文件 但是,当我更改文件时,它仍然显示为已提交修改。

我试过了:

git rm --cached app/etc/local.xml  

但这会删除github 中的文件,但是它会让我继续在本地编辑文件,但它不会出现在提交中。

如何将原始文件保存在github上?

这与我的.gitignore中的所有文件和文件夹一致

2 个答案:

答案 0 :(得分:2)

你正在寻找错误的方向。

您的问题的常见解决方案是创建两个文件:

  • obj - 为其中的所有设置添加合理的默认值,并将其添加到app/etc/local.xml.dist存储库;
  • Git - 将您在计算机上实际使用的值放在此文件中,不要将其添加到app/etc/local.xml存储库中(如果已存在则将其删除)将其路径添加到Git

.gitignore中添加评论,教导您的同事们应该制作文件的副本,将其命名为local.xml.dist并将其实际配置值放入其中(而不是修改local.xml为此目的)。

编写代码以阅读local.xml.dist然后,如果存在local.xml.dist,则加载它并覆盖从local.xml加载的值。这种方式local.xml.dist只能包含真正需要设置的值;如果local.xml已提供可在本地计算机上使用的默认值,则可能会错过local.xml.dist

这就是现在很多软件包的工作方式。

答案 1 :(得分:1)

有很多这样的问题,因为人们自然会尝试这样做(即,根据存储库中的环境具有配置文件)并且它永远不会起作用。除了将配置从存储库中取出或每个环境有一个文件(不同的文件/目录名称)和指向它的外部符号链接(或其他机制)之外,没有好的解决方案。您发现的问题可能有详细说明。

您可能认为您需要git忽略它的解决方案,但从长远来看这确实没有用(即git reset --hard仍会破坏您的本地更改,或git merge如果上游文件发生变化,将会失败,从而导致手动开销。