设为首页 收藏本站
查看: 901|回复: 0

[经验分享] Git学习笔记(6)——Bug和Feature分支

[复制链接]

尚未签到

发表于 2015-11-1 16:03:22 | 显示全部楼层 |阅读模式
  本文主要记录了通过Git来调试Bug和添加新的功能,也就是Bug分支和Feature分支,以及分支的推送。

  Bug分支
  通过Git,我们可以为每个Bug建立一个分支,Bug修复后,合并分支,然后将临时分支删除。
  当有Bug的时候,想创建一个分支bug-101来修复它,如果,当前正在dev上进行的工作还没有完成,不能提交,而且,我们必须马上解决bug,这时,我们借助Git提供的stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作。



ubuntu@myUbuntu:~/joe/learngit$ git branch
dev
* master
ubuntu@myUbuntu:~/joe/learngit$
git checkout dev
    //我们正在dev上面修改文件
切换到分支 'dev'
ubuntu@myUbuntu:~/joe/learngit$ ls
abc.c  readme.txt
ubuntu@myUbuntu:~/joe/learngit$ vi abc.c
ubuntu@myUbuntu:~/joe/learngit$ git status   
位于分支 dev
尚未暂存以备提交的变更:
(使用 "git add <file>..." 更新要提交的内容)
(使用 "git checkout -- <file>..." 丢弃工作区的改动)
修改:     abc.c
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
ubuntu@myUbuntu:~/joe/learngit$
git stash
    //要修改bug了,我们先存储当前的分支
Saved working directory and index state WIP on dev: b961f85 dev
HEAD 现在位于 b961f85 dev
ubuntu@myUbuntu:~/joe/learngit$
git checkout master
    //回到主分支建立bug-101分支
切换到分支 'master'
您的分支与上游分支 'origin/master' 一致。
ubuntu@myUbuntu:~/joe/learngit$
git checkout -b bug-101

切换到一个新分支 'bug-101'
ubuntu@myUbuntu:~/joe/learngit$
vi abc.c
     //修改bug,然后提交完工
ubuntu@myUbuntu:~/joe/learngit$ cat abc.c
bug is ok
ubuntu@myUbuntu:~/joe/learngit$ git add abc.c
ubuntu@myUbuntu:~/joe/learngit$
git commit -m "fix bug-101"

[bug-101 5ad5f95] fix bug-101
1 file changed, 1 insertion(+), 1 deletion(-)
ubuntu@myUbuntu:~/joe/learngit$
git checkout master
    //回到主分支
切换到分支 'master'
您的分支与上游分支 'origin/master' 一致。
//以非快速模式合并分支
ubuntu@myUbuntu:~/joe/learngit$
git merge --no-ff -m "merge buf-101" bug-101

Merge made by the 'recursive' strategy.
abc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
ubuntu@myUbuntu:~/joe/learngit$
git branch -d bug-101
    //删除bug分支
已删除分支 bug-101(曾为 5ad5f95)。
ubuntu@myUbuntu:~/joe/learngit$
git checkout dev
    //回到dev分支上面
切换到分支 'dev'
ubuntu@myUbuntu:~/joe/learngit$ git status
位于分支 dev
无文件要提交,干净的工作区
ubuntu@myUbuntu:~/joe/learngit$
git stash list
    //查看存储区,发现有一条刚才的存储
stash@{0}: WIP on dev: b961f85 dev
ubuntu@myUbuntu:~/joe/learngit$
git stash pop
    //弹出存储区
位于分支 dev
尚未暂存以备提交的变更:
(使用 "git add <file>..." 更新要提交的内容)
(使用 "git checkout -- <file>..." 丢弃工作区的改动)
修改:     abc.c
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
丢弃了 refs
/stash@{0
} (264672afc6d36af005a5a27e8c165ad89216eb2d)
ubuntu@myUbuntu:~/joe/learngit$
git stash list
    //存储区为空。
//工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下,有两个办法:
//(1)git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;
//(2)git stash pop,恢复的同时把stash内容也删了:
  //可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令:

$ git stash apply stash@{0}
  Feature分支



ubuntu@myUbuntu:~/joe/learngit$ git branch
dev
* master
//接到命令添加新功能,创建功能分支
ubuntu@myUbuntu:~/joe/learngit$
git checkout -b feature-01
   
切换到一个新分支 'feature-01'
ubuntu@myUbuntu:~/joe/learngit$ vi abc.c
ubuntu@myUbuntu:~/joe/learngit$ cat abc.c
I am a new feature.
ubuntu@myUbuntu:~/joe/learngit$ git add abc.c
ubuntu@myUbuntu:~/joe/learngit$ git status
位于分支 feature-01
要提交的变更:
(使用 "git reset HEAD <file>..." 撤出暂存区)
修改:     abc.c
ubuntu@myUbuntu:~/joe/learngit$
git commit -m "add feature-01"
   //完工以后,提交
[feature-01 683e3bb] add feature-01
1 file changed, 1 insertion(+), 1 deletion(-)
ubuntu@myUbuntu:~/joe/learngit$
git checkout dev
    //回到其他分支,准备合并后删除删除功能分支
切换到分支 'dev'
ubuntu@myUbuntu:~/joe/learngit$ git branch
* dev
feature-01
master
//接到命令,新功能取消,(不合并功能分支)删除功能分支
ubuntu@myUbuntu:~/joe/learngit$
git branch -d feature-01
//提示,没有合并,不能删除,如需强制删除,使用参数D   
error: 分支 'feature-01' 没有完全合并。   
如果您确认要删除它,执行 'git branch -D feature-01'。
ubuntu@myUbuntu:~/joe/learngit$
git branch -D feature-01
    //强制删除分支
已删除分支 feature-01(曾为 683e3bb)。
ubuntu@myUbuntu:~/joe/learngit$ git branch
* dev
master
(如果已经合并了怎么办?只能版本回退了。)
  推送分支



ubuntu@myUbuntu:~/joe/learngit$ git remote    //查看远程连接
origin
ubuntu@myUbuntu:~/joe/learngit$ git remote -v    //显示详细的信息
origin    git@github.com:joesGit15/learngit.git (fetch)
origin    git@github.com:joesGit15/learngit.git (push)
ubuntu@myUbuntu:~/joe/learngit$ git status
位于分支 master
您的分支领先 'origin/master' 共 2 个提交。
(使用 "git push" 来发布您的本地提交)
无文件要提交,干净的工作区
ubuntu@myUbuntu:~/joe/learngit$ git push origin master    //推送主分支
ubuntu@myUbuntu:~/joe/learngit$ git push origin dev    //推送dev分支
  并不是一定要把本地分支往远程推送,可以参考如下内容:


  • master分支是主分支,因此要时刻与远程同步;
  • dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
  • bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;
  • feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-133690-1-1.html 上篇帖子: Git学习笔记(1)——安装,配置,创建库,文件添加到库 下篇帖子: Git学习笔记(3)——撤销修改和文件的删除
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表