【问题标题】:Git: Fixing errors in main branch while working at another branchGit:在另一个分支工作时修复主分支中的错误
【发布时间】:2016-05-19 14:55:24
【问题描述】:

我在一个 Git 项目中工作。

我的进一步工作计划是从主分支切换到开发新功能的“开发”分支。

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

每次发现错误都从“devel”切换到“main”(再返回)很不方便。

如何轻松搞定?

【问题讨论】:

    标签: git version-control branch branching-and-merging


    【解决方案1】:

    如果您发现应该在 masterdevelop 中修复的错误,我建议将 master 中的修复作为单个提交进行,然后将您的 develop 分支重新定位到 master 之上。

    所以,rebase-workflow 应该是这样的:

    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 的存储库。这可以用一个git push 完成还是我需要运行git push 两次(对于两个分支中的每一个)?请更新您的答案并添加git push
    • @porton 我更新了我的答案以显示推送到 master,但是推送到开发有点棘手,因为 rebase 可能已经重写了分支的历史记录。为此,您可能需要强制推动。此博客条目可能是了解其后果的良好起点:willi.am/blog/2014/08/12/the-dark-side-of-the-force-push
    • 如何使用merge 而不是rebase 来简化推送?这是个好主意吗?我不是mergerebase 差异方面的专家,需要建议
    • @porton,是的,合并绝对是一种选择。我个人更频繁地使用 rebase 以保持更线性的历史记录,但其他人可能更喜欢合并。只是取决于你的情况。如果您是 develop 分支上唯一的开发人员,那么强制推送应该是无害的
    • 您能否编写“合并”工作流程,以显示两种可能的变体?我还想看看这两种变体的优缺点
    猜你喜欢
    • 2018-06-22
    • 1970-01-01
    • 1970-01-01
    • 2022-11-09
    • 2023-04-01
    • 2022-11-25
    • 2011-02-21
    相关资源
    最近更新 更多