4

如果需要将修复提交到 master 和另一个分支(在远程共享 repo 上),最佳实践是什么?由于我们不能在这里使用 git merge ,因为不是 master 或 branch 中的所有提交都应该进入另一个,cherry-pick 是最好的选择吗?

--

例子:

将 FIX 提交给 master

结帐分行

从 master 中挑选 FIX 并推送

--

cherry-pick 是否与 rebase 有相同的问题(如果要共享提交,则永远不要 rebase)?

4

4 回答 4

2

cherry-pick在您的情况下是一个不错的选择!

cherry-pick 是否与 rebase 有相同的问题(如果要共享提交,则永远不要 rebase)?

Cherry - pick没有任何问题,rebase例如. 这不会破坏历史(如)。操作后,这些提交将不会以任何方式耦合!branchrebase

于 2013-06-27T11:21:06.077 回答
2

首选做法应该是在一个分支上进行修复,该分支是应该合并修复的所有分支的公共基础,并将该提交合并到所有目标分支中。这使您可以在“是分支 B 中的提交 A”和“是分支 B 中的错误 A 的修复”之间建立对应关系。

如果您自然没有这样的分支,您可以从历史上合适的点创建一个临时分支,例如使用git merge-base.

这可能被证明有问题的情况是分支分歧如此之大,以至于基本上您需要进行差异修复以解决每个分支中的相同问题。

例如

git checkout -b quickfix $(git merge-base master branch)
# Note, you may want to check 'git merge-base -a' and choose the best one
# code, code code
git add <modified files>
git commit -m "Fix for pressing issue"

git checkout master
git merge quickfix
# Review merge and test result, fixup merge if necessary

git checkout branch
git merge quickfix
# Review merge and test result, fixup merge if necessary

# Optionally, push all branches to 'origin'
git push origin branch master
于 2013-06-27T11:38:15.787 回答
0

樱桃采摘是正确的选择。

提交给 master,然后樱桃也选择提交到你的分支上。

我不明白您与 的比较rebase,但请注意,cherry pick 创建了一个全新的提交(当然,因为父数据和其他元数据会有所不同)

于 2013-06-27T10:15:10.130 回答
0

如果您排除了合并,确实将cherry-pick 保留为唯一的选择。首先推送主节点,然后使用将原始哈希添加到提交消息的形式选择分支。

picks 的问题在于他们创建了一个新的提交,这使得很难知道真正包含的内容。所以尽量保留尽可能多的关系信息。

于 2013-06-27T10:36:59.937 回答