是否可以告诉 git 在进行合并或变基时忽略某些行?
Is it possible to tell git to ignore certain lines when doing merge or rebase?
假设我有一个名为 myorigin 的起源和一个名为 myclone 的克隆。我想让 myclone 更新 myorigin 的变化。在 myorigin 我有一个文件,内容是:
Name: myorigin
some text
some more text
克隆后我在 myclone 中修改这个文件如下:
Name: myclone
some text
some more text
当我在 myclone 中时:
git fetch
git merge origin
它会告诉我有冲突。
有什么方法可以告诉 git 忽略某些行吗?
我应该采用不同的方法吗?
您可以编写自己的合并驱动程序,或编写一组干净和污迹过滤器,以便 Git 不执行此合并,或看不到此行。但总的来说,不,没有简单的方法可以按照你的建议去做。
作为一般规则,任何类型的 "configuration" 数据都不应提交到源存储库本身。相反,如果合适的话,源存储库应该包含一个 sample 配置,并且实际配置保存在其他地方(.gitignore
-d,或者完全在工作树之外).
如果用户从"FooBarix Version 1.3"升级到"FooBarix Version 2.0"时需要升级配置,2.0版本可能应该包含一个在升级过程中获取运行的配置迁移程序,保存原始配置并切换到新配置(none 其中作为 FooBarix 本身的一部分受源代码控制)。这也提供了 降级 配置的能力,如果证明有必要从 2.0 退回到 1.3。
假设我有一个名为 myorigin 的起源和一个名为 myclone 的克隆。我想让 myclone 更新 myorigin 的变化。在 myorigin 我有一个文件,内容是:
Name: myorigin
some text
some more text
克隆后我在 myclone 中修改这个文件如下:
Name: myclone
some text
some more text
当我在 myclone 中时:
git fetch
git merge origin
它会告诉我有冲突。
有什么方法可以告诉 git 忽略某些行吗?
我应该采用不同的方法吗?
您可以编写自己的合并驱动程序,或编写一组干净和污迹过滤器,以便 Git 不执行此合并,或看不到此行。但总的来说,不,没有简单的方法可以按照你的建议去做。
作为一般规则,任何类型的 "configuration" 数据都不应提交到源存储库本身。相反,如果合适的话,源存储库应该包含一个 sample 配置,并且实际配置保存在其他地方(.gitignore
-d,或者完全在工作树之外).
如果用户从"FooBarix Version 1.3"升级到"FooBarix Version 2.0"时需要升级配置,2.0版本可能应该包含一个在升级过程中获取运行的配置迁移程序,保存原始配置并切换到新配置(none 其中作为 FooBarix 本身的一部分受源代码控制)。这也提供了 降级 配置的能力,如果证明有必要从 2.0 退回到 1.3。