在我们公司,我们有alpha和beta,当我们即将发布新版本时,我们会进行git merge alpha(在beta分支上),所以我们将所有alpha合并到beta版。
这种方法的问题是我们有一些配置文件不应该合并到beta中,只有alpha(和其他开发分支),但不应该被git忽略,也不属于另一个存储库,因为之后所有这些都属于那个特定的分支。
因此,“理想”解决方案将是:
git merge alpha -commit-to-ignore
或仅在合并时设置要忽略的特定文件。
不确定这些选项是否存在,或者它是否是最佳方法。
答案 0 :(得分:1)
如果分支alpha和beta中的配置文件中的更改是互斥的,即它们会导致冲突,那么您可以使用ours
合并策略简单地合并它
git merge -s ours alpha
否则,最简单的解决方案是从alpha创建一个新分支。删除您不想合并的配置文件,提交更改并将新分支合并到测试版中。但是,使用这种方法,如果你最终将beta合并到alpha中,那么在快进合并的情况下,你也会松散alpha中的配置文件。
更优选的解决方案是在alpha中创建一个包含配置更改的单独提交,现在您可以将该分支的其余部分合并/转换为beta,除了提交。
如果配置文件中的更改是最新提交,那么您可以按照以下方式轻松完成
git checkout -b temp_branch HEAD~1
git checkout beta
git merge temp_branch
如果提交介于两者之间,则需要rebase --onto
删除该特定提交,然后合并。为了解释,让我们说你有
>> git log --oneline
2c10ba8 latest commit
088a38e config commit
c233f51 some other commit
>> git checkout -b temp_branch
# Now you need to remove 'config commit' with hash id 088a38e
>> git rebase --onto c233f51 088a38e 2c10ba8
# resolve if any conflict occurs
# Now your git log should look like shown below, with undesirable commit removed
>> git log --oneline
2c10ba8 latest commit
c233f51 some other commit
>> git checkout beta
>> git merge temp_branch