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