文档章节

去除多余的Merge branch提交

zgw06629
 zgw06629
发布于 2015/04/29 19:06
字数 420
阅读 74
收藏 0
点赞 0
评论 0
Git

在项目开发中,经常会有这样的情况发生,开发完了一个新功能,提交到远程仓库时,发现提交失败(其他同事已对其做了更改),先得pull最新代码再能提交。但这时会有一个恼人的冗余提交(Merge branch ......),如本地添加了一个file1,同时其他同事添加了file2并先行一步提交到远程仓库。等我提交时得先更新代码。这时项目提交历史就会如下所示:

e76dfc4216d797af0f093a8121b9a586d4d33ce6 Merge branch 'master' of https://github.com/XXX/helloworld
20171e3a0ed95a6b6a920cda8d7837fff2b393db Create file2 from remote
accf96f77485502f918b56007eb39af687674755 add file1 from local

怎样取消掉恼人的Merge branch提交呢?使提交历史变为简单的:

accf96f77485502f918b56007eb39af687674755 add file1 from local
20171e3a0ed95a6b6a920cda8d7837fff2b393db Create file2 from remote

解决方法(假设使用的是master分支)只须执行如下命令

git rebase origin/master

然后执行提交(git push origin master)即可。

解释:

当更新完代码后(即执行完git pull origin master),origin/master(远程分支)的提交历史(git log origin/master)如下所示:

C0(共同祖先) --> C1(create file2)

master的提交历史(git log)为:

C0 -->  C2(add file1) --> C1(create file2) -->C3(Merge branch)

在master分支中执行git rebase origin/master,相当于将C0以后的master分支的更改(add file1)以补丁文件的形式在origin/master分支中重新应用一遍,从而改写master分支的提交历史,使其成为origin/master分支的直接下游,即这时master的提交历史变为:

C0 --> C1 (create file2) --> C2(add file1)

同时origin/master的提交历史仍保持不变。

补充:

关于git rebase更详细的介绍见git文档--分支的衍合


© 著作权归作者所有

共有 人打赏支持
zgw06629
粉丝 15
博文 54
码字总数 30471
作品 0
海淀
程序员
Git学习系列之为什么选择Git?

为什么选择Git?   流行的软件版本开源管理软件,有CVS、SVN、GIT版本管理工具,Git的优势在哪里呢?   Git 和 CVS、SVN不同,是一个分布式的源代码管理工具,它很强,也很快,Linux内核...

技术小哥哥 ⋅ 2017/02/05 ⋅ 0

Git的基本概念和用法

在日常使用GIT过程中,经常会出错,比如无意间丢失了未提交的数据,回退版本时丢失了工作目录,等等。经过思考发现,所有这些错误都是因为对GIT中一些基本的概念模糊而导致,因为对一些基本概...

jims ⋅ 2016/10/01 ⋅ 0

Git和 CVS、SVN分布式的源代码管理工具区别

Git和 CVS、SVN不同,是一个分布式的源代码管理工具。Linux内核的代码就是用Git管理的。它很强,也很快。 Git和 CVS、SVN不同,是一个分布式的源代码管理工具。Linux内核的代码就是用Git管理...

冯京宝 ⋅ 2012/10/08 ⋅ 0

git fetch, merge, pull, push需要注意的地方

在Git操作中,我们经常会用到fetch, merge, pull和push等命令,以下是一些我们需要注意的地方。 给大家准备了参考资料: 1. Whatʼs a Fast Forward Merge?:https://sandofsky.com/images/...

jims ⋅ 2016/08/30 ⋅ 0

Git 常用命令速查表(三)

前面两篇博客 Git 版本管理工具 和 Git 常用命令详解,分别介绍了Git 基础知识和命令用法 本文将对Git 命令,做一下全面而系统的简短总结,整理成简洁、明了的图表结构,方便查询 一、 Git ...

长平狐 ⋅ 2013/01/06 ⋅ 0

分布式源代码管理工具(Git) 2.8.0 官方多语中文版

Git是一个强大的分布式的源代码管理工具。Git是用c语言开发的分布版本控制系统。版本控制系统可以保留一个文件集合的历史记录,并能回滚文件集合到另一个状态(历史记录状态)。另一个状态可...

相心的泪 ⋅ 2016/07/21 ⋅ 0

快速入门系列--GIT版本控制工具

由于GIT刚刚开始使用不久,经常会在Merge时出现没有change-id的情况,在结合gerrit使用时,经常出现不能提交的情形,使得自己很困扰。最近有次熬夜加班,在代码完成后,由于多人在很短时间内...

moki_oschina ⋅ 2016/11/23 ⋅ 0

Git 常用命令速查

转自:http://www.jb51.net/article/55442.htm 一、 Git 常用命令速查 git branch 查看本地所有分支 git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支 git branch -r ...

qulei1 ⋅ 2017/07/07 ⋅ 0

Git flow分支管理

Git flow概述 Git flow是最早产生, 也是得到广深采用的的一种工作流程, 他的分支管理策略非常值得借鉴, 很大程度上避免了Git分支管理的混乱. 项目存在两个长期分支 主分支 master 开发分支 ...

boomya ⋅ 2016/06/14 ⋅ 0

SVN如何合并和同步分支

使用svn几年了,一直对分支和合并敬而远之,一来是因为分支的管理不该我操心,二来即使涉及到分支的管理,也不敢贸然使用合并功能,生怕合并出了问题对团队造成不良影响,最主要的原因是,自...

fzxu_05 ⋅ 2015/12/07 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

火狐浏览器各版本下载及插件httprequest

各版本下载地址:http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/ httprequest插件截至57版本可用

xiaoge2016 ⋅ 23分钟前 ⋅ 0

Java学习路径及练手项目合集

Java学习路径及练手项目合集

颖伙虫 ⋅ 39分钟前 ⋅ 0

Docker系列教程28-实战:使用Docker Compose运行ELK

原文:http://www.itmuch.com/docker/28-docker-compose-in-action-elk/,转载请说明出处。 ElasticSearch【存储】 Logtash【日志聚合器】 Kibana【界面】 答案: version: '2'services: ...

周立_ITMuch ⋅ 今天 ⋅ 0

使用快嘉sdkg极速搭建接口模拟系统

在具体项目研发过程中,一旦前后端双方约定好接口,前端和app同事就会希望后台同事可以尽快提供可供对接的接口方便调试,而对后台同事来说定好接口还仅是个开始、设计流程,实现业务逻辑,编...

fastjrun ⋅ 今天 ⋅ 0

PXE/KickStart 无人值守安装

导言 作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装。 常规的办法有什么? 光盘安装系统 ===> 一...

kangvcar ⋅ 昨天 ⋅ 0

使用Puppeteer撸一个爬虫

Puppeteer是什么 puppeteer是谷歌chrome团队官方开发的一个无界面(Headless)chrome工具。Chrome Headless将成为web应用自动化测试的行业标杆。所以我们很有必要来了解一下它。所谓的无头浏...

小草先森 ⋅ 昨天 ⋅ 0

Java Done Right

* 表示难度较大或理论性较强。 ** 表示难度更大或理论性更强。 【Java语言本身】 基础语法,面向对象,顺序编程,并发编程,网络编程,泛型,注解,lambda(Java8),module(Java9),var(...

风华神使 ⋅ 昨天 ⋅ 0

Linux系统日志

linux 系统日志 /var/log/messages /etc/logrotate.conf 日志切割配置文件 https://my.oschina.net/u/2000675/blog/908189 logrotate 使用详解 dmesg 命令 /var/log/dmesg 日志 last命令,调......

Linux学习笔记 ⋅ 昨天 ⋅ 0

MVC——统一报文格式的异常处理响应

在我们写controller层的时候,常常会有这样的困惑,如果需要返回一个数据是,可能为了统一回去构造一个类似下列的数据格式: { status:true, msg:"保存成功!", data:[]} 而且在写...

alexzhu592 ⋅ 昨天 ⋅ 0

android -------- 打开本地浏览器或指定浏览器加载,打电话,打开第三方app

开发中常常有打开本地浏览器加载url或者指定浏览器加载, 还有打开第三方app, 如 打开高德地图 百度地图等 在Android程序中我们可以通过发送隐式Intent来启动系统默认的浏览器。 如果手机本身...

切切歆语 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部