gpt4 book ai didi

git - 如何维护(moSTLy)并行分支只有少数差异

转载 作者:IT王子 更新时间:2023-10-29 01:11:18 28 4
gpt4 key购买 nike

场景:我试图在 git 下获取我的 unix 点文件。我必须(至少)在 cygwin 环境和一些标准的 linux 发行版(ubuntu 和 opensuse)之间工作,并且我有仅特定于 cygwin 的文件/代码行。因为我不想 checkout 无用的文件或不得不处理我的点文件中的大量情况,所以我正在为我的每个环境创建分支。但我所做的大部分编辑对所有环境都是通用的,因此几乎每次我进行提交时,我都需要将该更改传播到我的所有分支。

所以基本上我有几个分支,除了少数提交外几乎完全相同,而且我确实需要在所有分支中进行大多数提交。

问题:为此推荐的 git 工作流程是什么(如果有的话)?或者对于我的场景是否有更好的设置(不使用多个分支?)?

[我试过 cherry-picking,但这涉及相当多的工作,更不用说这里所有的重复提交以及让我的分支保持同步的噩梦。]

最佳答案

对于那种特殊情况,在一个分支中有很多通用文件在演变,而每个环境只有几个特定的​​配置文件……我们不将配置文件存储在 Git 中。完全没有。

我们确实存储了所述配置文件的模板,加上所有特定的每个环境值,以及一个能够用正确的值替换模板文件中的变量的脚本(检测当前平台)

这样,我们就不需要只为这些文件创建分支。


另一种管理此类文件(具有特定于平台的内容)的好方法是通过 git attribute filter driver (另请参见 Pro Git book)。

A filter driver consists of a clean command and a smudge command, either of which can be left unspecified.
Upon checkout, when the smudge command is specified, the command is fed the blob object from its standard input, and its standard output is used to update the worktree file.
Similarly, the clean command is used to convert the contents of worktree file upon check-in.

这样,污迹引用的脚本(使用 Git 管理)可以用特定于平台的值替换所有变量,而干净的脚本会将其内容恢复到未修改的配置文件。

http://git-scm.com/figures/18333fig0702-tn.png

主要思想仍然是:避免仅为那种并行演化创建分支。

关于git - 如何维护(moSTLy)并行分支只有少数差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2152841/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com