如何在master上进行错误修正并将其集成到不太稳定的分支中?

Big*_*ies 6 git branching-strategy

我现在正在为我的一个项目使用Git,我喜欢它.

但是,因为我是唯一一个在我的项目上工作的人,所以我用过的唯一命令就是

git status
git add .
git commit -m 'message here'
git push origin master
Run Code Online (Sandbox Code Playgroud)

我很久以前就已将项目推向远程(我使用Capistrano进行部署),一切都很顺利.

现在我想改变网站的设计,但保持逻辑不变.我猜我需要创建一个新分支(让我们称之为newdesign).

我想知道的是:如果我正在newdesign分支机构工作,并且我在分支中看到了一个错误,master我怎么能修复bug master然后将该bugfix集成到newdesign分支中,以便后者成为与实际逻辑保持同步?

jub*_*0bs 27

这是一个经典案例,您可以利用Git分支机构.这是您应该使用的工作流程.

假设您创建了一个develop源自的分支,master并且您已在该分支上进行了一些提交:

在此输入图像描述

突然间,你意识到你需要快速修复一个bug master; master您应该创建一个短命的错误修复分支,而不是直接使用它,以便将错误修复任务与您的master分支隔离开来:

git checkout master
git checkout -b bugfix
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

bugfix分支上进行一次提交(或更多)以解决问题后,

在此输入图像描述

你应该确保一切正常(运行测试等).如果您对代码的状态感到满意,请将其bugfix合并到master:

git checkout master
git merge bugfix
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

在该阶段,您可以将您的(现在已修复)master分支推送到远程,并删除bugfix分支:

git push origin master
git branch -d bugfix
Run Code Online (Sandbox Code Playgroud)

现在,集成最新的变化masterdevelop,你基本上有两种选择.

  1. 合并masterdevelop,通过运行:

    git checkout develop
    git merge master
    
    Run Code Online (Sandbox Code Playgroud)

    在此输入图像描述

  2. 另外,底垫develop之上master,通过运行:

    git checkout develop
    git rebase master
    
    Run Code Online (Sandbox Code Playgroud)

    在此输入图像描述

在任何一种情况下,您的develop分支现在都将包含错误修复程序,您可以继续处理它.

  • @MateenUlhaq我更喜欢使用错误修复分支:如果我最初尝试修复错误毫无进展,我可以删除错误修复分支并在“master”处从头开始,而不必清理“master”上的拙劣尝试。 (3认同)
  • Owww ...非常感谢你...这已经很好地回答了我的问题. (2认同)