维护两个 git 个具有固定差异集的分支
Maintaining two git branches with a fixed set of differences
我正在使用一个共享 git 存储库,它有两个主要分支,一个用于产品交付,一个用于特定测试平台。两者之间有一组固定的差异必须维护(数千个额外的文件,加上对现有文件的一些更改),但除此之外我想将两个分支中的更改合并到另一个分支中。
问题:每次我从一个合并到另一个时,都会包含那组差异,所以我必须在完成合并之前删除差异。这在两个方向上都会发生,所以我总是从 "fake" 变化中挑选出真正的变化。
如何以 Git 友好的方式维护这两个分支,这样我就不必一直说服 Git 忽略这些更改?
正确的做法如下:
- 选择两个分支之一作为"master"分支,另一个作为"dependent"分支
- 当master分支有变化时,使用merge将变化带入从属分支
- 当依赖分支发生变化时,cherry-pick 将提交回主分支。
Git 将记住两个分支之间的 "fixed" 差异作为依赖分支上历史提交的产物,并且在从主分支合并到依赖分支时将保留这些差异。正如我所注意到的,如果我从依赖项合并回主分支,Git 会尝试将这些差异带回主分支; cherry-picking 避免了这些变化,只会带来 "new" 差异。 (这确实意味着您必须跟踪必须引入主提交的依赖提交,但似乎没有办法解决这个问题。)
找出要合并的提交的提交哈希。 (例如 96f402f1391
)
然后检查你要合并到的分支并使用cherry-pick
git cherry-pick 96f402f1391
我正在使用一个共享 git 存储库,它有两个主要分支,一个用于产品交付,一个用于特定测试平台。两者之间有一组固定的差异必须维护(数千个额外的文件,加上对现有文件的一些更改),但除此之外我想将两个分支中的更改合并到另一个分支中。
问题:每次我从一个合并到另一个时,都会包含那组差异,所以我必须在完成合并之前删除差异。这在两个方向上都会发生,所以我总是从 "fake" 变化中挑选出真正的变化。
如何以 Git 友好的方式维护这两个分支,这样我就不必一直说服 Git 忽略这些更改?
正确的做法如下:
- 选择两个分支之一作为"master"分支,另一个作为"dependent"分支
- 当master分支有变化时,使用merge将变化带入从属分支
- 当依赖分支发生变化时,cherry-pick 将提交回主分支。
Git 将记住两个分支之间的 "fixed" 差异作为依赖分支上历史提交的产物,并且在从主分支合并到依赖分支时将保留这些差异。正如我所注意到的,如果我从依赖项合并回主分支,Git 会尝试将这些差异带回主分支; cherry-picking 避免了这些变化,只会带来 "new" 差异。 (这确实意味着您必须跟踪必须引入主提交的依赖提交,但似乎没有办法解决这个问题。)
找出要合并的提交的提交哈希。 (例如 96f402f1391
)
然后检查你要合并到的分支并使用cherry-pick
git cherry-pick 96f402f1391