【问题标题】:Git Branches - Ignore File in MergingGit 分支 - 合并时忽略文件
【发布时间】:2016-04-04 18:30:16
【问题描述】:
假设我有两个分支,master 和 staging,我想在每个分支中有两个不同版本的 /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,但这仅在存在合并冲突和/或不适用于此工作流程时发生。
有什么想法吗?
【问题讨论】:
标签:
git
merge
git-merge
branching-and-merging
【解决方案1】:
您应该有一个robots.txt.test 和robots.txt.deploy,伴随着一个构建过程,该过程根据您生成的图像类型部署适当的:例如用于内部测试的映像,而不是外部部署。
或者,可能是单个文件 robots.txt.in,其中包含基于某些输入生成 robots.txt 的预处理语言。
对于“内部”与“实时”部署等而言,分支不是在同一组配置文件中维护不同类型配置的合适工具。
当两个不同的流必须合并为一个时,使用合并。如果它们必须保持差异,例如同一配置文件中的不同值,这将无法工作。当您合并两个在树中的样本位置具有robots.txt 的分支时,结果必须是一个robots.txt。
如果您想维护两个无限期分叉的流,则不要合并。您可以使用git cherry-pick 将单个更改从一个复制到另一个。
您避免挑选任何涉及robots.txt 的更改,或者至少是robots.txt 中不常见的那些行。
在版本控制下添加文件,然后试图让版本控制忽略它,这显然是矛盾的。
【解决方案2】:
几个选项:
.gitignore
将文件添加到 .gitignore 文件中
// .gitignore content
robots.txt
假设不变
在你不想让 git 跟踪的文件上使用它
git update-index --no-assume-unchanged <file>
git add -p
为每个分支添加所需的部分(添加补丁)