Git 分支 - 合并时忽略文件

Git Branches - Ignore File in 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,但这仅在存在合并冲突时发生 and/or 不适用于此工作流程。

有什么想法吗?

几个选项:

.git忽略

将文件添加到 .git忽略文件

// .gitignore content
robots.txt

assume-unchanged

在您不想 git 跟踪的文件上使用它

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

git add -p

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

你应该有一个 robots.txt.testrobots.txt.deploy,伴随着一个构建过程,它根据你生成的图像类型部署适当的过程:例如用于内部测试与外部部署的映像。

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

对于 "internal" 与 "live" 部署等,分支不是在同一组配置文件中维护不同类型配置的合适工具。

当两个不同的流必须合并为一个时使用合并。如果他们必须保持差异,比如同一配置文件中的不同值,这将无法工作。当您合并两个在树的示例位置具有 robots.txt 的分支时,结果必须是一个 robots.txt.

如果你想维护两个无限分叉的流,那么你不要合并。您可以使用 git cherry-pick 将单个更改从一个复制到另一个。

您避免挑选任何触及 robots.txt 的更改,或者至少避免 robots.txt 中不常见的那些行。

在版本控制下添加一个文件,然后试图让版本控制忽略它,这显然是矛盾的。