git 分支管理

21人阅读 评论(0) 收藏 举报
分类:

分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立即提交,由于代码还没写完,不完整的代码库会导制别人不能干活。如果等全部写无再一次提交,又存在丢失每天进进度的巨大风险。有了分支,就可以创建一个属于你自已的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活。

创建和合并分支

一开始的时候,master分支是一条经,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点。

当我们创建新的分支,例如dev时,Git新建一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上。

查看分支:git branch

创建分支:git branch <name>

切换分支:git checkout <name>

创建+切换分支:git checkout -b <name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>

当Git无法自动合并会支时,就必须首先解决冲突。合并完成后,可以用git log --graph命令可以看到分支合并图。

分支策略

在实际开发中,我们应该按照几个基本原则进行分支管理。

首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;

干活都在dev分支上,每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以。

合并分支时,另上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出曾经做过合并,而fast forward合并就看不出来曾经做过合并。

Bug分支

当你接到一个修复一个代号101的bug的任务时,很自然地,你想创建一个分支issue-101来修复它,但是,当前正在dev上进行的工作还没有提交。并不是你不想提交,而是工作只进行到一半,还没有办法提交,但是bug需要快速修复,怎么办?

Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作。现在,用git status查看工作区,就是干净的,因此可以放心创建分支来修复bug。

当完成bug修复后,可以恢复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分支

添加一个新功能时,肯定不希望因为一些实验性质的代码,把主分支搞乱,所以,每添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合并,最后,删除该feature分支。

如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除。

多人协作

当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin。要查看远程库的信息,用git remote, 或者,用git remote -v显示更详细的信息,如果没有推送权限,就看不到push的地址。

推送分支,就是把该分支上的所有本地提交推送到远程库。推送时,需要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上:

$ git push origin master

如果要推送其也分支,比如dev,就改成:

$ git push origin dev

但是,并不是一定要把本地分支远程推送,那么,哪些分支需要推送,哪些不需要呢?

(1)master分支是主分支,因此要时刻与远程同步。

(2)dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步

(3)bug分支只用于本地修复bug,就没必要推送到远程也,除非老板要看看你每周到底修复了几个bug

(4)feature分支是否推送到远程,取决于你是否和你的小伙伴合作在上面开发。

抓取分支

当你的小伙伴从远程库clone时,默认情况下,你的小伙伴只能看到本地的master分支。可以用git branch命令看看。

现在,你的小伙伴要在dev分支上开发,就必须创建远程origin的dev分支到本地

$ git checkout -b dev origin/dev

因此,多人协作的工作模式通常是这样:

(1)首先,可以试图用git push origin branch-name推送自己的修改。

(2)如果推送失败,则因为远程分支比你的本地更新,需要git pull试图合并

(3)如果合并有冲突,则解决冲突,并在本地提交。

(4)没有冲突或者解决冲突后,再用git push origin branch-name推送就能成功。

如果git pull提示“no tracking information”则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name orgin/branch-name









查看评论

git分支管理文档

  • 2017年10月09日 11:00
  • 1KB
  • 下载

Git分支管理规范和解析

目录 quick start why git 仓库和分支管理 远程和本地 分支管理 实战 git命令 git GUI 参考 quick_start 安装git工具可以使用git命令行,启动命令行工具...
  • dream_coder_21
  • dream_coder_21
  • 2017-06-15 09:32:56
  • 577

git学习之三:分支管理

介绍git版本控制的核心利器-分支(branch)。
  • xuesuc
  • xuesuc
  • 2016-05-28 15:00:35
  • 1313

Git 分支管理最佳实践

Git 分支管理最佳实践 Git 是目前最流行的源代码管理工具。熟练使用 Git 已经成为开发人员的必修课之一。对于团队开发来说,如何有效的使用 Git 的分支是一个重要的课题。需要在新功能开发,新...
  • jljf_hh
  • jljf_hh
  • 2017-04-01 12:42:16
  • 687

Git 分支管理与开发流程

参考连接 http://www.ituring.com.cn/article/56870 http://semver.org/lang/zh-CN/ http://blog.csdn...
  • lanxingfeifei
  • lanxingfeifei
  • 2017-03-30 11:12:52
  • 1229

git 中分支管理工程的思路

比较有意义的网站: GIT分支管理是一门艺术 Git分支管理策略 A successful Git branching model 推荐的策略:总结采用的策略是第二个网站中的策略1. 主分支:mast...
  • qqliyunpeng
  • qqliyunpeng
  • 2017-04-13 11:25:39
  • 693

SVN分支管理最佳策略

SVN分支管理最佳策略 [ 2014-08-29 20:41 | 浏览次数: 1,817次 | 0条评论 ] 现在网上git的分支管理最佳策略最好查找, 基本上都趋同于一个. 由nv...
  • chungle2011
  • chungle2011
  • 2015-11-04 12:54:01
  • 829

Git的版本和分支管理(高级用法 写的较好)

由于已经对git使用比较熟悉了,此篇关于git分支和版本的的管理将不会详细记录每一个细节。如果你还不熟悉git,请先参看: [1] http://blog.csdn.net/xiahouzuox...
  • sdkdlwk
  • sdkdlwk
  • 2017-12-09 16:58:10
  • 95

Git分支管理模型

参考博客: 阮一峰 分支管理策略 分支管理策略 分支管理目的: 打包方便,不影响测试效率。 分支自管理,便于开发独立性。 bug易于处理,并不影响现行开发进...
  • u014099894
  • u014099894
  • 2015-11-23 01:07:26
  • 837

Git学习总结(12)——多人开发 Git 分支管理详解

1.前言  在上一篇博客中我们主要讲解了Git 远程仓库,相信大家对远程的Git仓库有一定的了解,嘿嘿。在这一篇博客中我们来在大家讲解一下Git 分支管理,这可以说是Git的又一大特点。下面...
  • u012562943
  • u012562943
  • 2016-10-17 14:06:27
  • 1571
    个人资料
    持之以恒
    等级:
    访问量: 64万+
    积分: 1万+
    排名: 1938
    最新评论