Git分支 - 合并中忽略文件

时间:2015-12-30 18:46:13

标签: git merge git-merge branching-and-merging

假设我有两个分支,masterstaging,我希望在每个分支中有两个不同版本的/robots.txt

主:

# www.robotstxt.org/
# Allow crawling of all content
User-agent: *
Disallow: 

分期

# www.robotstxt.org/
# Disallow crawling of all content
User-agent: *
Disallow: / 

除了管理暂存环境的最佳实践外,如何在忽略此文件的同时将更新从暂存合并到主服务器,反之亦然?我已经尝试了一个.gitattributes文件,上面写着:robots.txt merge=ours,但这只发生在合并冲突和/或不适用于此工作流程时。

任何想法?

2 个答案:

答案 0 :(得分:3)

您应该有一个git add -probots.txt.test,并附带一个构建过程,该过程会根据您生成的图像类型部署相应的构建过程:例如:用于内部测试的图像,与外部部署相比。

或者,可能是单个文件robots.txt.deploy,其中包含基于某些输入生成robots.txt.in的预处理语言。

分支不是在同一组配置文件中维护不同类型配置的适当工具,用于“内部”与“实时”部署等。

当两个不同的流必须合并为一个时,使用合并。如果必须维护差异(例如同一配置文件中的不同值),则无法工作。当您合并树中示例位置中具有robots.txt的两个分支时,结果必须为robots.txt

如果要维护两个无限分歧的流,则不合并。您可以使用robots.txt将各个更改从一个更改为另一个。

您可以避免挑选任何触及git cherry-pick的更改,或至少robots.txt中不常见的更改。

在版本控制下添加文件,但随后尝试让版本控制忽略它,这是公然的矛盾。

答案 1 :(得分:1)

几个选项:

的.gitignore

将文件添加到.gitignore文件

NIF  PRICE
111   200
222   600
111   100

假设-不变

在你不希望git跟踪的文件上使用它

// .gitignore content
robots.txt

git update-index --no-assume-unchanged <file>

为每个分支添加所需的部分(添加补丁)

enter image description here