Git 将bug修复提交到master和branch的最佳实践

Git 将bug修复提交到master和branch的最佳实践,git,Git,如果需要将修复提交到主分支和另一分支(在远程共享回购上),那么最佳做法是什么? 既然我们不能在这里使用git merge,因为不是所有的主或分支中的提交都应该进入另一个,cherry pick是最佳选择吗 -- 例如: 向主机提交修复程序 结帐处 cherry从master选择修复并推送 -- cherry pick与rebase是否存在相同的问题(如果要共享提交,则永远不要重新设置基础)?cherry pick是正确的选择 向master提交,cherry也可以在您的分支上选择提交 我不理解您

如果需要将修复提交到主分支和另一分支(在远程共享回购上),那么最佳做法是什么? 既然我们不能在这里使用git merge,因为不是所有的主或分支中的提交都应该进入另一个,cherry pick是最佳选择吗

--

例如:

向主机提交修复程序

结帐处

cherry从master选择修复并推送

--


cherry pick与rebase是否存在相同的问题(如果要共享提交,则永远不要重新设置基础)?

cherry pick是正确的选择

向master提交,cherry也可以在您的分支上选择提交


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

如果您排除了合并,那么cherry pick确实是唯一的选项。首先推送主消息,然后使用向提交消息添加原始哈希的表单选择分支


pick的问题是它们创建了一个新的提交,这使得它很难知道在哪里真正包含了什么。所以尽可能多地保存关系信息。

樱桃选择
在您的情况下是一个不错的选择

cherry pick是否存在与重基相同的问题(如果 提交(将被共享)


Cherry pick没有任何问题,比如
重新基址
,因为它的工作方式是:读取Cherry pick提交的差异,并将修补程序应用于
分支
。这不会破坏历史记录(如
rebase
)。操作完成后,这些提交将不会以任何方式耦合

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

如果您自然没有这样的分支,您可以从历史中的适当位置创建一个临时分支,例如使用
git merge base
找到

在这种情况下,分支可能会出现问题,因为分支之间的分歧太大,所以您需要进行差异修复,以解决每个分支中的相同问题

例如

git签出-bquickfix$(git合并基本主分支)
#注意,您可能需要选中“git merge base-a”并选择最好的一个
#代码,代码
git添加
git commit-m“解决紧迫问题”
切换到主分支
git合并快速修复
#检查合并和测试结果,必要时修复合并
git签出分支
git合并快速修复
#检查合并和测试结果,必要时修复合并
#(可选)将所有分支推送到“原点”
git推送源分支主节点

你已经看过了吗?@igor:它被引用了这么多,真的有人这样使用它吗?我在某个地方看到了一条批评它的线索,这至少是一个很好的起点,可以根据自己的具体需要进行调整。(我也在修改过的版本中使用了它。)如果没有其他东西的话,它提供了一个很好的基本印象,即应该去哪里。
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