文档章节

去除多余的Merge branch提交

zgw06629
 zgw06629
发布于 2015/04/29 19:06
字数 420
阅读 145
收藏 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
粉丝 16
博文 54
码字总数 30471
作品 0
海淀
程序员
私信 提问
Git学习系列之为什么选择Git?

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

技术小哥哥
2017/02/05
0
0
Git的基本概念和用法

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

jims
2016/10/01
33
0
Git和 CVS、SVN分布式的源代码管理工具区别

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

冯京宝
2012/10/08
0
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
19
0
Git 常用命令速查表(三)

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

长平狐
2013/01/06
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

oh-my-zsh 自定义

GitHub 地址 基于 oh-my-zsh 的自定义配置,增加了一些个人常用插件与皮肤。 采用的是 git submodule 来维护,包括 oh-my-zsh,之所以这么搞,主要是手头有多台 linux 需要维护, 每台机器、...

郁也风
今天
4
0
Docker安装踩坑:E_FAIL 0x80004005的解决

参考 菜鸟教程--Windows Docker 安装 http://www.runoob.com/docker/windows-docker-install.html 官方文档-Install Docker Toolbox on Windows https://docs.docker.com/toolbox/toolbox_in......

karma123
今天
4
0
js垃圾回收机制和引起内存泄漏的操作

JS的垃圾回收机制了解吗? Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是标记清除。 工作原理:是当变量进入环境时,将这个变量标记为“...

Jack088
昨天
17
0
大数据教程(10.1)倒排索引建立

前面博主介绍了sql中join功能的大数据实现,本节将继续为小伙伴们分享倒排索引的建立。 一、需求 在很多项目中,我们需要对我们的文档建立索引(如:论坛帖子);我们需要记录某个词在各个文...

em_aaron
昨天
27
0
"errcode": 41001, "errmsg": "access_token missing hint: [w.ILza05728877!]"

Postman获取微信小程序码的时候报错, errcode: 41001, errmsg: access_token missing hint 查看小程序开发api指南,原来access_token是直接当作parameter的(写在url之后),scene参数一定要...

两广总督bogang
昨天
31
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部