阻止git要求提交更改的方法

4
我们在一个项目中有几个配置文件,有3个人在工作。然而,这些配置文件包含了每个人都不同的几行内容,因此不能被更改或覆盖。但是,Git不允许我们从其他人那里拉取更改,除非我们提交这些配置文件的更改,这意味着它会再次更改其他成员的配置。

作为Git的新手,似乎我们需要创建分支并合并它们来更新我们的代码,或者使用.gitignore。如何正确处理这种情况?我们所有人都需要随时访问其他成员所做的更改。

5个回答

7

不要将配置文件检入。

如果需要,你可以有一个config.example文件,每个人都将其复制到未跟踪的配置文件中-这是大多数项目处理此问题的方式。


5

我一直在发现,在应用程序中使用合理的默认值以及忽略版本控制的可选配置文件的价值。示例配置文件可能会被检查,但名称不同;通常为“config.example.yml”(或适合您的任何扩展名)。


4
跟踪示例配置文件通常是一种不错的方法。然后您可以拥有一个未跟踪的本地副本。您可以使用githooks帮助您应用差异。您可以将post-merge和post-checkout(甚至post-commit)重新复制跟踪到未跟踪,并可能应用更改以创建自定义版本。最后一部分的具体做法取决于您 - 它是一个脚本。一些调用sed -i也许能够完成这个任务。
如果您能够使用两个配置文件或配置文件具有某种“include”指令,则另一种可能性是使用一个已跟踪和一个未跟踪的文件。

2
我很确定我不推荐以下技巧,但是...
您可以使用过滤驱动程序为每个开发人员设置适当的配置文件。提交的文件可以包含通用值,每个开发人员都有一个模糊规则来更改它。
例如,如果要按每个开发人员修改文件中名为'config-file'的行,则该行应如下所示:
config: default
然后,开发人员将在其本地.git/info/attributes中拥有以下内容:
config-file filter=modify-config
并在.git/config中具有类似于以下内容的内容:
[filter "modify-config"] smudge = sed -e 's/^config:.*/config: developers value/' clean = sed -e '/^config/s/.*/config: default/'

1

你也可以使用被称为“rebase --onto”的高级git技巧,如这里所述

据我理解,这种方法是在你自己的分支上将你自己的配置更改放在一个单独的提交中。在自己的分支上工作。每隔一段时间,你会将分支从你的配置提交以上割掉,并将其重新接到主分支上。根据需要重复此过程。

Scott Chacon即将出版的书Pro Git中有一个很好的图表说明。

我认为这是Git中最好只需要学习一次的事情之一。使用git config --global alias.lop 'rebase --onto etc. etc.',这样你以后就可以直接输入例如git lop


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接