Git-Bug分支和Feature分支

Bug分支

​ 在软件开发中,如果你正在dev分支上进行开发,突然在master分支上有一个紧急问题需要修复,这个时候就需要新建一个bug分支来修复这个问题,但此时dev的开发只进行了一半,没法立即提交,此时就需要使用git 的stash功能,先把工作区"储存"起来,等修复完bug以后恢复现场继续工作。

  1. 储藏当前现场

    1
    git stash
  2. 跳转到master分支,并新建issur-101分支以修复bug

    1
    2
    git checkout master	#跳转到master分支
    git checkout -b issue-101 #创建issue分支以解决问题
  3. 修复bug,并提交

    1
    2
    3
    # 修复bug
    git add <文件名>
    git commit -m "fix bug 101"
  4. 切换回master分支,完成合并并删除issue-101分支

    1
    2
    3
    git switch master
    git merge --no-ff -m "merged bug fix 101"
    git branch --delete issue-101
  5. 回到dev分支恢复工作现场,并删除stash

    1
    2
    3
    git switch dev
    git stash list # 查看stash lit
    git stash pop # 回复现场并删除stash内容
    • git stash pop的功能可以拆分为两步,首先使用git stash apply恢复现场,然后使用git stash drop删除stash
    • 可以多次stash,先用git stash list查看暂存的stash,并使用git stash apply stash@{<要恢复的stash号>},对指定stash进行恢复
  6. dev分支上的此bug也进行修复

    1
    2
    git switch dev
    git cherry-pick <提交的版本号> # 这个版本号是提交issue-101的版本号
    • 为什么要这样做?
      • dev其实也是早期从master上分支出来的,因此这个bug在dev分支上也存在
    • cherry-pick相当于复制一个特定的提交到当前的分支,在执行完这个命令后,git会给dev自动进行一次提交
    • 还有没有其他办法?
      • git stash后,先在dev分支上修复此bug,再cherry-pick到master分支上也是一样的

Feature分支

​ 当你要开发一个新功能,新建一个分支并完成内容后,切回dev分支,此时如果产品经理说这个功能不需要了,需要删除这些功能的代码,此时由于分支还没有被合并,使用git branch -d <新分支名>会报错,产生如下提示:

1
2
error: The branch <分支名> is not fully merged.
If you are sure you want to delete it, run 'git branch -D <分支名>'.

​ 此时就需要使用如下命令强制进行删除:

1
git branch -D <分支名>

  • 此外,如果项目经理告诉你的时候你已经完成了合并,那么你需要进行版本回退来丢弃这次分支合并的成果。

参考资料