ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

git学习(11)—— 分支管理(Bug分支)

2021-09-09 14:01:46  阅读:181  来源: 互联网

标签:11 git stash master 101 issue 分支


当你接到一个修复一个代号101的bug的任务时,很自然地,你想创建一个分支issue-101来修复它,但是,当前正在dev上进行的工作还没有提交(而且还未完成,无法提交,而bug需要立即开始修复),此时如果直接切换到master分支或者创建并切换到issue-101分支,会将当前修改也带到master分支或者新的分支上。

幸好,Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:

储藏工作现场: git stash

$ git stash
Saved working directory and index state WIP on dev: f52c633 add merge

现在再用 git status 查看工作区状态,就是干净的

该如何处理 代号为 101 的 bug 任务呢?

(1)首先确定要在哪个分支上修复bug,假定需要在master分支上修复,就从master创建临时分支

git checkout master

git switch -c issue-101 / git checkout -b issue-101

$ git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 6 commits.
  (use "git push" to publish your local commits)

$ git checkout -b issue-101
Switched to a new branch 'issue-101'

(2)在新分支(以 issue-101分支为例)上修改bug并提交到本地版本库

...fix bug...

git add ...

git commit -m '....'

(3)修复完成后,切换到master分支,并完成合并,最后删除issue-101分支:

git checkout master

git merge --no-ff -m 'merged bug fix 101' issue-101

git branch -d issue-101

(4)bug修复完成,可切换回 dev 分支继续干活啦

git switch dev

切换回工作分支dev后,如何恢复工作现场呢?

(1)查看工作现场储藏列表:git stash list

(2) 恢复储藏的工作现场

方式一:

恢复最近一次储藏的工作现场(不删除恢复的工作现场):git stash apply 

方式二:

恢复最近一次储藏的工作现场(且删除恢复的工作现场):git stash pop

方式三:

恢复指定的储藏的工作现场(不删除恢复的工作现场):git stash apply stash@{xx}

清空工作现场储藏列表:git stash clear

eg. git stash apply stash@{2}  

如何将此次bug修改同步到dev(其他分支)上呢?

把修改“复制”到当前分支git cherry-pick commit_id

(1)找到在 issue-101 上提交代码的 commit_id (尤其需要注意,commit_id是修改bug时提交的那个,不是合并到master分支上的那个!!!),

(2)在需要合并修改的那个分支上执行 git cherry-pick <commit_id>


注意,如果使用 git cherry-pick 合并代码时存在代码冲突:

在 dev 分支(当前工作的分支)上提交代码到版本库后再使用 git cherry-pick <commit_id>进行代码复制,因为只有在代码都提交以后才可以进行代码的冲突解决合并。

标签:11,git,stash,master,101,issue,分支
来源: https://blog.csdn.net/m0_37856464/article/details/120185426

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有