Git:在另一个分支工作时修复主分支中的错误

Git:在另一个分支工作时修复主分支中的错误,git,version-control,branch,branching-and-merging,Git,Version Control,Branch,Branching And Merging,我在一个Git项目工作 我进一步的工作计划是从主分支切换到“devel”分支,在那里我开发新特性 但有时在“devel”分支工作时,我可能会发现一个错误。如果我发现一个错误,我不仅应该在“devel”中纠正它,而且应该在“main”中纠正它 每次发现错误时,从“devel”切换到“main”(并返回)是不方便的 如何轻松完成?如果您发现一个bug应该在master和develope中修复,我建议将master中的修复作为一次提交,然后在master的顶部重新设置develope分支 因此,重设基

我在一个Git项目工作

我进一步的工作计划是从主分支切换到“devel”分支,在那里我开发新特性

但有时在“devel”分支工作时,我可能会发现一个错误。如果我发现一个错误,我不仅应该在“devel”中纠正它,而且应该在“main”中纠正它

每次发现错误时,从“devel”切换到“main”(并返回)是不方便的


如何轻松完成?

如果您发现一个bug应该在
master
develope
中修复,我建议将
master
中的修复作为一次提交,然后在
master
的顶部重新设置
develope
分支

因此,重设基础工作流如下所示:

git checkout master
# fix bug
git add fileYouAltered
git commit -m "fixed bug"
git push origin master

git checkout develop
git rebase master
git push -f origin develop
git checkout master
# fix bug
git add fileYouAltered
git commit -m "fixed bug"
git push origin master

git checkout develop
git merge master
git push origin develop
合并工作流如下所示:

git checkout master
# fix bug
git add fileYouAltered
git commit -m "fixed bug"
git push origin master

git checkout develop
git rebase master
git push -f origin develop
git checkout master
# fix bug
git add fileYouAltered
git commit -m "fixed bug"
git push origin master

git checkout develop
git merge master
git push origin develop

现在修复将在两个分支中进行,但只需一次提交。

谢谢。但我还需要
git push
来更新我在BitBucket的回购协议。这可以通过一个
gitpush
来完成,还是需要运行
gitpush
两次(对于两个分支中的每一个)?请通过添加
git push
@porton更新您的答案我更新了我的答案以显示push-to-master,但是push-to-development有点棘手,因为rebase可能已经重写了分支的历史。为此,你可能需要用力推。这篇博客文章可能是理解其后果的一个很好的起点:为了简化推送,使用
merge
而不是
rebase
有什么意义?这是个好主意吗?我不是
merge
rebase
差异方面的专家,需要advice@porton是的,合并肯定是一种选择。我个人更经常地使用rebase来保持更线性的历史,但其他人可能更喜欢合并。这取决于你的情况。如果您是
develope
分支上唯一的开发人员,那么强制推送应该是有害的。您是否也可以编写“合并”工作流,以显示这两种可能的变体?我还想看看这两种变体的优缺点