一、应用场景

为什么需要合并多个提交呢?

常常一个功能的开发,修修补补 commit 了 n 多次,带来的结果就是提交过多过杂,不够直观,究竟哪些提交是对应这个功能的呢?还有就是,如果我要将这个功能迁移到其他分支呢?一个个 commit 去 cherry-pick 吗?未免太麻烦了吧!为什么不尝试下将多个 commit 合并成一个呢?

二、功能实现

将多个 commit 合并成一个,用到的主要 git 命名就是 git rebase。先来解释下git rebase 。其实可以把它理解成是 "重新设置基线" ,为你的当前分支重新设置开始点。

git rebase –i ,这里的 "-i" 是指交互模式。就是说你可以干预rebase这个事务的过程,包括设置commit message,暂停commit等等。

1、查看提交历史

git log -

-10 表示要查看 commit 记录的条数。

2、git rebase -i [commit_log]

git rebase -i 5c946ca764a1a2672f36b7e8e70b647da2609caa

pick : 代表合并后的提交用这个提交的注释;
s : squash命令的简写,代表合并提交中包含这个提交;
d : 代表合并提交中排除这个提交。

3、设置commit message

4、总结

rebase 需要基于一个 commit 来设置你当前的分支的基线,这基线就是当前分支的开始时间轴向后移动到最新的跟踪分支的最后面,这样你的当前分支就是最新的跟踪分支。这里的操作是基于文件事务处理的,所以你不用怕中间失败会影响文件的一致性。在中间的过程中你可以随时取消rebase 事务。git rebase –abort

git rebase 合并多次提交.的更多相关文章

  1. 使用git rebase合并多次commit

    使用git rebase合并多次commit 聊下 git rebase -i

  2. 分布式版本控制系统Git-----7.Git 使用git rebase合并多次commit

    将多次commit合并,只保留一次提交历史. PS:在我练习的时候,将一个文件的代码做了多次修改,而且每次修改都给提交了,这几次改动的目的都一样,比如说修改RADEME.md,但是每次改动的只是一个小 ...

  3. Git 合并多次提交

    在合并分支的时候,希望将多次提交合并成一个,然后再 cherry-pick 到主分支. 合并分支 develop 分支做开发,可能会进行多次提交,但是在发布或者进行 PR 的时候,我们只希望看到一次提 ...

  4. 合并多次提交 commits 到 新分支

    压缩多个Commit 当你提交代码进行代码审查时或者创建一次pull request (这在开源项目中经常发生),你的代码在被接受之前会被要求做一些变更.于是你进行了变更,并且直到下一次审查之前你没有 ...

  5. git rebase修改历史提交内容

    目录 简述 解决过程 简述 git提交历史中有一次提交的内容是有问题,因为每隔一段时间就要发一次版本,所以必须修改这次提交的内容,以便其不影响已经发布的版本. 大概是这样子的 A --- B ---- ...

  6. git<git rebase 修改以前提交过的内容>

      git rebase 使用总结: 使用git rebase 修改以前已经提交的内容 比如要修改之前的commit的 hashcode为:187f869c9d54c9297d6b0b1b4ff47d ...

  7. 使用Git-Rebase合并多次提交

    在平时的软件开发中,我们每个team使用一个公共仓库(这里说的是Git仓库).每当有一个新的需求,我们会拉出一个特性分支,然后在这个特性分支上做开发以及提交个人的代码. 我有个习惯就是:为了确保代码的 ...

  8. git rebase命令

    使用git rebase合并多次commit. 当年提交代码后,管理员发现,你的代码不能提交到服务器上,注意原因在于,你的commit中的commit和服务器中的有些commit不在同一时间轴上,即: ...

  9. git合并多个提交

    git合并多个提交 [时间:2016-11] [状态:Open] [关键词:git,git rebase,合并提交,commit] 0. 引言 本文是关于Git提交记录修改的方法,主要是将多个提交记录 ...

随机推荐

  1. java并发包java.util.concurrent详解

    线程池ThreadPoolExecutor的使用 并发容器之CopyOnWriteArrayList 并发容器之CopyOnWriteArraySet 数据结构之ConcurrentHashMap,区 ...

  2. WARN: Establishing SSL connection without server's identity verification is not recommended

    0.要想用Java连接mysql数据库,首先装好JDK,配置好环境变量,将jdk*.*.*\lib放入classpath,将jdk*.*.*\bin放入path中(*.*.*表示版本号):其次安装好m ...

  3. yii批量插入的方法

    public function insertSeveral($table, $array_columns) { $sql = ''; $params = array(); $i = 0; foreac ...

  4. 玩转JPA(一)---异常:Repeated column in mapping for entity/should be mapped with insert="false" update="fal

    最近用JPA遇到这样一个问题:Repeated column in mapping for entity: com.ketayao.security.entity.main.User column: ...

  5. SimpleXML系列函数操作XML

    创建SimpleXML对象 种方法来创建对象,分别是: l  Simplexml_load_file()函数,将指定的文件解析到内存中. l  Simplexml_load_string()函数,将创 ...

  6. bzoj 1076 奖励关 状压+期望dp

    因为每次选择都是有后效性的,直接dp肯定不行,所以需要逆推. f[i][j]表示从第i次开始,初始状态为j的期望收益 #include<cstdio> #include<cstrin ...

  7. BZOJ_3048_[Usaco2013 Jan]Cow Lineup _双指针

    BZOJ_3048_[Usaco2013 Jan]Cow Lineup _双指针 Description Farmer John's N cows (1 <= N <= 100,000) ...

  8. BZOJ_1014_[JSOI2008]火星人prefix_splay+hash

    BZOJ_1014_[JSOI2008]火星人prefix_splay+hash 题意:火星人最近研究了一种操作:求一个字串两个后缀的公共前缀.比方说,有这样一个字符串:madamimadam, 我们 ...

  9. BZOJ_[JSOI2010]Group 部落划分 Group_kruskal

    BZOJ_[JSOI2010]Group 部落划分 Group_kruskal Description 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人 ...

  10. Linux vim常用命令

    什么是 vim? Vim是从 vi 发展出来的一个文本编辑器.代码补完.编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用. 简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是 ...