Git学习笔记(6)——Bug和Feature分支

本文主要记录了通过Git来调试Bug和添加新的功能,也就是Bug分支和Feature分支,以及分支的推送。



Bug分支

通过Git,我们可以为每个Bug建立一个分支,Bug修复后,合并分支,然后将临时分支删除。

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

[email protected]:~/joe/learngit$ git branch
  dev
* master
[email protected]:~/joe/learngit$ 

git checkout dev

    //我们正在dev上面修改文件
切换到分支 ‘dev‘
[email protected]:~/joe/learngit$ ls
abc.c  readme.txt
[email protected]:~/joe/learngit$ vi abc.c
[email protected]:~/joe/learngit$ git status
位于分支 dev
尚未暂存以备提交的变更:
  (使用 "git add <file>..." 更新要提交的内容)
  (使用 "git checkout -- <file>..." 丢弃工作区的改动)

    修改:     abc.c

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
[email protected]:~/joe/learngit$ 

git stash

    //要修改bug了,我们先存储当前的分支
Saved working directory and index state WIP on dev: b961f85 dev
HEAD 现在位于 b961f85 dev
[email protected]:~/joe/learngit$ 

git checkout master

    //回到主分支建立bug-101分支
切换到分支 ‘master‘
您的分支与上游分支 ‘origin/master‘ 一致。
[email protected]:~/joe/learngit$ 

git checkout -b bug-101

切换到一个新分支 ‘bug-101‘
[email protected]:~/joe/learngit$ 

vi abc.c

     //修改bug,然后提交完工
[email protected]:~/joe/learngit$ cat abc.c
bug is ok
[email protected]:~/joe/learngit$ git add abc.c
[email protected]:~/joe/learngit$

git commit -m "fix bug-101"

[bug-101 5ad5f95] fix bug-101
 1 file changed, 1 insertion(+), 1 deletion(-)
[email protected]:~/joe/learngit$ 

git checkout master

    //回到主分支
切换到分支 ‘master‘
您的分支与上游分支 ‘origin/master‘ 一致。
//以非快速模式合并分支
[email protected]:~/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(-)
[email protected]:~/joe/learngit$ 

git branch -d bug-101

    //删除bug分支
已删除分支 bug-101(曾为 5ad5f95)。
[email protected]:~/joe/learngit$ 

git checkout dev

    //回到dev分支上面
切换到分支 ‘dev‘
[email protected]:~/joe/learngit$ git status
位于分支 dev
无文件要提交,干净的工作区
[email protected]:~/joe/learngit$ 

git stash list

    //查看存储区,发现有一条刚才的存储
[email protected]{0}: WIP on dev: b961f85 dev
[email protected]:~/joe/learngit$ 

git stash pop

    //弹出存储区
位于分支 dev
尚未暂存以备提交的变更:
  (使用 "git add <file>..." 更新要提交的内容)
  (使用 "git checkout -- <file>..." 丢弃工作区的改动)

    修改:     abc.c

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
丢弃了 refs

/[email protected]{0

} (264672afc6d36af005a5a27e8c165ad89216eb2d)
[email protected]:~/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 [email protected]{0}


Feature分支

[email protected]:~/joe/learngit$ git branch
  dev
* master
//接到命令添加新功能,创建功能分支
[email protected]:~/joe/learngit$ 

git checkout -b feature-01

切换到一个新分支 ‘feature-01‘
[email protected]:~/joe/learngit$ vi abc.c
[email protected]:~/joe/learngit$ cat abc.c
I am a new feature.
[email protected]:~/joe/learngit$ git add abc.c
[email protected]:~/joe/learngit$ git status
位于分支 feature-01
要提交的变更:
  (使用 "git reset HEAD <file>..." 撤出暂存区)

    修改:     abc.c

[email protected]:~/joe/learngit$ 

git commit -m "add feature-01"

   //完工以后,提交
[feature-01 683e3bb] add feature-01
 1 file changed, 1 insertion(+), 1 deletion(-)
[email protected]:~/joe/learngit$ 

git checkout dev

    //回到其他分支,准备合并后删除删除功能分支
切换到分支 ‘dev‘
[email protected]:~/joe/learngit$ git branch
* dev
  feature-01
  master
//接到命令,新功能取消,(不合并功能分支)删除功能分支
[email protected]:~/joe/learngit$ 

git branch -d feature-01

//提示,没有合并,不能删除,如需强制删除,使用参数D
error: 分支 ‘feature-01‘ 没有完全合并。
如果您确认要删除它,执行 ‘git branch -D feature-01‘。
[email protected]:~/joe/learngit$ 

git branch -D feature-01

    //强制删除分支
已删除分支 feature-01(曾为 683e3bb)。
[email protected]:~/joe/learngit$ git branch
* dev
  master
(如果已经合并了怎么办?只能版本回退了。)


推送分支

[email protected]:~/joe/learngit$ git remote    //查看远程连接
origin
[email protected]:~/joe/learngit$ git remote -v    //显示详细的信息
origin    [email protected]:joesGit15/learngit.git (fetch)
origin    [email protected]:joesGit15/learngit.git (push)
[email protected]:~/joe/learngit$ git status
位于分支 master
您的分支领先 ‘origin/master‘ 共 2 个提交。
  (使用 "git push" 来发布您的本地提交)
无文件要提交,干净的工作区
[email protected]:~/joe/learngit$ git push origin master    //推送主分支
[email protected]:~/joe/learngit$ git push origin dev    //推送dev分支

并不是一定要把本地分支往远程推送,可以参考如下内容:

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


Git学习笔记(6)——Bug和Feature分支

时间: 2024-11-09 15:56:26

Git学习笔记(6)——Bug和Feature分支的相关文章

Git 学习笔记&lt;分支管理&gt; (三)

分支是什么? 分支就像树分出的树枝,不同的是,它们之间可以互相合并. 将版本的推进想象成一个链表的伸长:  version 1.0 ==> version 2.0 ==>version3.0  . master是主要的分支基本上用于发布产品.你可以从master分出一个dev,在上面创建新功能,或者修bug然后调试.最后再合并到master里面.就像下面这样. master分支:  version 1.0=========>version 2.0===... \            

【版本控制】git学习笔记(三)

接着git学习笔记(二)学习,今天学习下git分支管理. 1.创建合并分支 默认创建的git目录只有master一个分支,现在我们创建dev分支,然后切换到dev分支: $ git checkout -b dev git checkout命令加上-b参数表示创建并切换,相当于以下两条命令: $ git branch dev $ git checkout dev 然后,用git branch命令查看当前分支: git branch命令会列出所有分支,当前分支前面会标一个*号. 然后,我们就可以在d

Git学习笔记整理

Git学习笔记 1.安装Git 注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置 $ git config --global user.name "Your Name" $ git config --global user.email "[email protected]" 2.创建版本库-repository $ mkdir learngit $ cd learngit $ pwd /Users/m

Git学习笔记(8)——标签管理

本文主要记录的Git标签的作用.标签的多种创建方式,以及标签的删除,与推送,和使用GitHub的Fork参与别人的项目. 标签的作用 发布版本时,通常先在版本库中打一个标签,这样,就唯一确定了打标签时刻的版本.无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来.所以,标签也是版本库的一个快照.Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支很像,但是分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的. 创建标签 [email pro

Git 学习笔记

Git 学习笔记 本文整理参考廖雪峰的 Git 教程, 整理 Git 学习笔记, 用于 Git 常用命令速查:常用命令用彩色标注! Git学习笔记 $ git config --global user.name "Your Name" 配置本机所有仓库的用户名 $ git config --global user.email "[email protected]" 配置本机所有仓库的Email地址 $ git init 初始化一个Git仓库 $ ls -ah 查看隐

Git学习笔记总结和注意事项

一.Git简介 Git是目前世界上最先进的分布式版本控制系统,其特点简单来说就是:高端大气上档次! 二.Windows上Git安装 最早Git是在Linux上开发的,很长一段时间内,Git也只能在Linux和Unix系统上跑.不过,慢慢地有人把它移植到了Windows上.现在,Git可以在Linux.Unix.Mac和Windows这几大平台上正常运行了. msysgit是Windows版的Git,从http://msysgit.github.io/下载,然后按默认选项安装即可.安装完成后,在开

Git 学习笔记&lt;远程仓库与标签管理&gt; (四)

什么是远程仓库? 就像第一章介绍的那样,远程仓库可以储存你编写的所有源码和资源文件. 甚至也可以当网盘使,不过当然有很多契合git管理文本的特性. 下面就要以 github 为示例远程仓库进行介绍.  (也可以自己弄一台服务器作远程仓库). 创建仓库 在主页找到 +New repository 或者右上角的加号里有.输入名字 描述 然后没钱只能public就能确定了.然后呢,点名字打开你的仓库.(主页右下角可以找到) 关于与远程仓库的连接 首先你打开你的保险箱得先证明身份吧,不然我怎么知道你是客

【版本控制】git学习笔记(二)

关于git的基本使用请阅读上篇博文内容,[版本控制]git学习笔记(一). 1.远程仓库 Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上.怎么分布呢?最早,肯定只有一台机器有一个原始版本库,此后,别的机器可以"克隆"这个原始版本库,而且每台机器的版本库其实都是一样的,并没有主次之分. 你肯定会想,至少需要两台机器才能玩远程库不是?但是我只有一台电脑,怎么玩? 其实一台电脑上也是可以克隆多个版本库的,只要不在同一个目录下.不过,现实生活中是不会有人这么傻的在一台电脑

Git学习笔记与IntelliJ IDEA整合

一.Git学习笔记(基于Github) 1.安装和配置Git 下载地址: http://git-scm.com/downloads Git简要使用说明: http://rogerdudler.github.io/git-guide/index.zh.html Github官方使用说明: https://help.github.com/articles/set-up-git 默认安装 配置 1)首先你要告诉git你的名字 git config --global user.name " Your N