在一些提交/推送之后更改.gitignore

时间:2017-03-18 01:13:14

标签: git gitignore socialengine

我在我的github帐户中创建了一个存储库,其中包含一个没有.gitignore文件的socialengine php项目。

然后我克隆了存储库localyl并创建了一个.gitignore文件,我编写了一些路径来忽略文件和文件夹。
作为一个例子

temporary/log
temporary/session
temporary/package

auth.php路径中有一个文件install/config/auth.php,我也在我的.gitignore文件中写下了忽略它的路径,如下所示

install/config

在安装过程中,我看到临时文件夹的子文件夹被忽略。

我认为当我在安装步骤中,应该在auth.php文件中写入一些代码验证行时,当我键入git status时,文件auth.php看起来没有分页。
虽然我在.gitignore文件中包含了路径(install / config),但我无法弄清楚为什么会发生这种情况。

我也尝试了install/config/install/config/*,但没有尝试。

如果我使用git rm --cached install/config/auth.php,那么该文件将被远程删除,因为在安装socialengine和将来安装时需要存在此文件。

我知道我能为这种情况做些什么吗?

2 个答案:

答案 0 :(得分:1)

不要那样做!

您在此处所做的是将本地 auth.php文件的维护责任分配给使用它的源系统

考虑以下思路。想象一下,您是系统的用户,您可以从供应商那里获得。每个季度,供应商都会向您发送一个新系统。但是,无论何时将服务器随机播放(每月一次,或者有时根据负载,或多或少频繁),您都会重新配置。

作为用户,您应该多久提交一次自己的个人配置?好吧,每次它改变,如果你是源控制它。这是每月,或多或少。

三个月,供应商会向您发送最新版本的系统...他会为您提供新的配置,即使这不是您的配置。这只是错误。您不仅不希望的新配置,您的配置更改计划不是他的计划。

解决方案是:作为供应商,不要那样做。不要将本地配置放入 。您的用户将拥有自己的本地配置,这些配置与您的代码分开存储,甚至可能位于完全独立的存储库中。

“但我的用户很愚蠢!我必须在他们身上加上配置!”

嗯,那没关系;很多都是。继续并包含初始配置或默认配置。如果您的用户尚未设置他们自己的配置,请使用它 - 甚至可以将其复制到作为本地配置。但是,之后,不要触及他们的本地配置。 1 确定更新初始和/或默认配置。但请勿触摸用户的本地配置。

1 可能除了迁移之外:如果用户从1.7版升级到2.1版,您可以迁移其本地配置以添加新功能。根据您的配置文件格式,如果他们希望从2.1降级回1.7,您可能还需要支持反向迁移。

答案 1 :(得分:0)

本地忽略

您需要使用assume-unchanged标志
https://git-scm.com/docs/git-update-index

# To temporarily ignore changes in a certain file, run:
git update-index --assume-unchanged <file>

# When you want to track changes again:
git update-index --no-assume-unchanged <file>

服务器端忽略

使用完整代码阅读此完整答案,以便在服务器端执行此操作:
What are some more forceful ways than a .gitignore to keep (force) files out of a repo?

  

- [无糖]假设-不变

     

指定此标志时,不会更新为路径记录的对象名称。

     

相反,此选项设置/取消设置路径的“假定未更改”位。

     

assume unchanged位打开时,用户承诺不更改文件并允许Git假定工作树文件与索引中记录的文件匹配。如果要更改工作树文件,则需要取消设置该位以告知Git。当在具有非常慢的lstat(2)系统调用(例如cifs)的文件系统上处理大项目时,这有时很有用。

     

如果需要在索引中修改此文件,Git将失败(优雅地),例如合并时提交;因此,如果上游更改了假定未跟踪文件,则需要手动处理该情况。

enter image description here