【问题标题】:Git Branches - Ignore File in MergingGit 分支 - 合并时忽略文件
【发布时间】:2016-04-04 18:30:16
【问题描述】:

假设我有两个分支,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,但这仅在存在合并冲突和/或不适用于此工作流程时发生。

有什么想法吗?

【问题讨论】:

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


【解决方案1】:

您应该有一个robots.txt.testrobots.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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-13
      • 1970-01-01
      • 2013-02-20
      • 2011-08-04
      • 1970-01-01
      • 1970-01-01
      • 2012-07-05
      相关资源
      最近更新 更多