分支branch作为git一个强大功能,在平时开发如果能够善加使用,定能成倍提升开发效率。

1.分支开发模式

主分支master上一般是稳定版本,需要保证随时都能发布。

所以,可以建立一个开发分支用于开发新功能。

git branch dev

查看有哪些分支

git branch -a
* dev
master
bugfix-1
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/dev
remotes/source/master

查看本地有哪些分支

git branch
* dev
master
bugfix-1

查看远程有哪些分支

git branch -r
origin/HEAD -> origin/master
origin/master
origin/dev
source/master

当一个开发分支上的新功能已经开发完成,并测试OK,此时,可以合并到master.

当前在master分支上,使用如下命令进行合并:

git merge dev --no-ff -m "AI2.0开发完成"

强烈建议使用--no-ff选项,这样,当合并到主分支的时候,会生成一个提交记录。

如果合并到主分支后需要回滚,直接找到刚才合并时的提交记录,进行回滚即可。

尤其是在主分支和dev分支交叉提交记录的时候,如果不使用--no-ff,需要挨个找哪个记录是在dev分支上提交的,会比较麻烦。

默认情况下,Git执行"快进式合并"(fast-farward merge),会直接将Master分支指向Develop分支。

两种合并方式如下图所示。

fast-farward



no-fast-farward

2. 比较两个分支的差异

在开发分支上提交了很多内容,这个时候,如果需要比较开发分支与主分支的差异,可以使用以下方法:

2.1 查看两个分支差异的文件

git diff branch1 branch2 --stat

例如,查看dev分支相对于master的改动文件:

git diff master dev  --stat

2.2 查看两个分支具体差异的内容

git diff branch1 branch2

3.查看提交历史及分支合并情况

用 oneline 或 format 时结合 --graph 选项,可以看到开头多出一些 ASCII 字符串表示的简单图形,形象地展示了每个提交所在的分支及其分化衍合情况。

git log --pretty=oneline --graph
* 7880521e21b1329965179bd45d632a3c91e227fa (HEAD -> master) Merge branch 'dev'
|\
| * 27cc24423ba0fcb01365eb7ffdc9ed33b059c36b (dev) 3 test
| * 714788192eb4760b614c2ab5fe45634df89904ee 2 test
* | ccce2c06660d8263e6a65d124ab947db0be56556 2 txt
|/
* 24c3941c7f5ef3e6b0c0be7638d29387f4643d90 1 test
git log --pretty=format:"%h %s" --graph
* 7880521 Merge branch 'dev'
|\
| * 27cc244 3 test
| * 7147881 2 test
* | ccce2c0 2 txt
|/
* 24c3941 1 test
(END)

*代表是在哪个分支提交的。

4.参考

git提交历史

git分支管理策略

git 常用的分支技巧的更多相关文章

  1. git log 常用命令及技巧

    git log常用命令以及技巧 1.git log 如果不带任何参数,它会列出所有历史记录,最近的排在最上方,显示提交对象的哈希值,作者.提交日期.和提交说明.如果记录过多,则按Page Up.Pag ...

  2. 「小技巧」使用Git从其他分支merge个别文件

    小明发现在实际项目开发过程中,总会遇到各种各样的情况,比如一个大型的项目或版本迭代可能不是一次上线,可能会分好几次上线,这时候就会涉及创建多个分支,分别开发. 项目背景 产品经理:我们本次开发三个功能 ...

  3. iOS开发——开发技巧&Git常用命令

    Git常用命令 初始化git init        加—bare实现远程仓库 配置git config user.name iCocos 配置全局git config —global user.na ...

  4. git 常用命令 创建查看删除分支,创建查看删除tag等

      1. git 文档 https://github.com/progit/progit/blob/master/zh/02-git-basics/01-chapter2.markdown https ...

  5. 项目开发中git常用命令、git工作流、git分支模型

    #新建代码库git init # 在当前目录新建一个Git代码库git init [project-name] # 新建一个目录,将其初始化为Git代码库git clone [url] # 下载一个项 ...

  6. git常用操作 配置用户信息、拉取项目、提交代码、分支操作、版本回退...

    git常用操作 配置用户信息.拉取项目.提交代码.分支操作.版本回退... /********git 配置用户信息************/ git config --global user.name ...

  7. git 常用技巧

    撤销修改 撤销本地修改 git reset --hard 或者 git checkout -- . 切换分支 切换到前一分支 git checkout - 切换到某个分支 git checkout & ...

  8. git常用命令速查:创建,修改提交,撤销,切换分支,合并分支,变基解决冲突

    创建 $ git init  #在当前目录下创建一个空的本地仓库 $ rm -rf  .git  #删除本地仓库 $ git add .  #把当前目录下的所有文件添加到暂存区 $ git commi ...

  9. 01 . Git常用命令及方法和分支管理

    原理 # Workspace:工作区 # Index / Stage:暂存区 # Repository:仓库区(或本地仓库) # Remote:远程仓库 本地分支关联远程 git branch --s ...

随机推荐

  1. ubuntu自己定义环境变量,替代常用的操作命令

    问题背景是这样的,因为自己会经常用自己的用户链接服务器,比如自己的用户是yongjie,然后服务器的ip是162.105.97.31 所以经常执行的命令是ssh yongjie@162.105.97. ...

  2. Spring框架中<mvc:default-servlet-handler/>的作用

    优雅REST风格的资源URL不希望带 .html 或 .do 等后缀.由于早期的Spring MVC不能很好地处理静态资源,所以在web.xml中配置DispatcherServlet的请求映射,往往 ...

  3. python、mysql三-2:数据类型

    一 介绍 存储引擎决定了表的类型,而表内存放的数据也要有不同的类型,每种数据类型都有自己的宽度,但宽度是可选的 详细参考: http://www.runoob.com/mysql/mysql-data ...

  4. detect 导图

    https://www.zhihu.com/question/356551927/answer/919612766 知乎上看到的,不错

  5. php socket如何实现长连接

    长连接是什么? 朋友们应该都见过很多在线聊天工具和网页在线聊天的工具.学校内有一种熟悉的功能,如果有人回复你了,网站会马上出现提示,此时你并没有刷新页面:Gmail也有此功能,如果邮箱里收到了新的邮件 ...

  6. Restricting Input in HTML Textboxes to Numeric Values

    Ok, here’s a fairly basic one – how to force a textbox to accept only numeric input. Somebody asked ...

  7. Linux perf命令详解及常用参数解析

    perf 相关命令:暂无相关命令 perf是Linux下的一款性能分析工具,能够进行函数级与指令级的热点查找. Perf List利用perf剖析程序性能时,需要指定当前测试的性能时间.性能事件是指在 ...

  8. CH5101 LICS//hdu5904 LICS

    恭喜我已经正式沦为pj组选手QwQ 标题两个题其实不一样的.这是ch   这是hdu 一.CH上的:裸题,求LICS.n<=3000 经典普及组dp题,题解烂大街了.所以对于这题,只讲细节: $ ...

  9. ssh转发流量的四种姿势

    在很多时候拿到了内网的一台主机,我们需要用它做跳板来对内网进一步扩大战果. 也许方法很多,meterpreter,nc等等.但是最方便也最有可能穿透防火墙的方法,就是用ssh. 分为四种类型: 本地转 ...

  10. 2017 网易游戏互娱游戏研发4.21(offer)

    网易游戏互娱(offer) 去年这个时候就参加过网易游戏的实习生招聘,到今年总共收到了4次拒信.不过这次运气好,终于get了最想要的offer.去年实习生互娱笔试挂,秋招笔试挂,今年春招互娱投了连笔试 ...