如果需要将修复提交到 master 和另一个分支(在远程共享 repo 上),最佳实践是什么?由于我们不能在这里使用 git merge ,因为不是 master 或 branch 中的所有提交都应该进入另一个,cherry-pick 是最好的选择吗?
--
例子:
将 FIX 提交给 master
结帐分行
从 master 中挑选 FIX 并推送
--
cherry-pick 是否与 rebase 有相同的问题(如果要共享提交,则永远不要 rebase)?
如果需要将修复提交到 master 和另一个分支(在远程共享 repo 上),最佳实践是什么?由于我们不能在这里使用 git merge ,因为不是 master 或 branch 中的所有提交都应该进入另一个,cherry-pick 是最好的选择吗?
--
例子:
将 FIX 提交给 master
结帐分行
从 master 中挑选 FIX 并推送
--
cherry-pick 是否与 rebase 有相同的问题(如果要共享提交,则永远不要 rebase)?
cherry-pick
在您的情况下是一个不错的选择!
cherry-pick 是否与 rebase 有相同的问题(如果要共享提交,则永远不要 rebase)?
Cherry - pick没有任何问题,rebase
例如. 这不会破坏历史(如)。操作后,这些提交将不会以任何方式耦合!branch
rebase
首选做法应该是在一个分支上进行修复,该分支是应该合并修复的所有分支的公共基础,并将该提交合并到所有目标分支中。这使您可以在“是分支 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
樱桃采摘是正确的选择。
提交给 master,然后樱桃也选择提交到你的分支上。
我不明白您与 的比较rebase
,但请注意,cherry pick 创建了一个全新的提交(当然,因为父数据和其他元数据会有所不同)
如果您排除了合并,确实将cherry-pick 保留为唯一的选择。首先推送主节点,然后使用将原始哈希添加到提交消息的形式选择分支。
picks 的问题在于他们创建了一个新的提交,这使得很难知道真正包含的内容。所以尽量保留尽可能多的关系信息。