git rebase

rebase就是重新定义你分支的起点, 分支上的commit将生成对应的新的commit并放在你指定的新的起点commit后, 分支上的老commit将被删除.

rebase就是将你的分支从一个commit移动到另一个commit作为起点.

用法

git rebase <base>

将base做为你当前分支的新起点, 这个<base>可以是任何一种commit引用(如ID, brand名, tag, HEAD~N).

讨论

rebase的主要目的就是保持project history是在一条线上没有分叉的. 例如, 想象下当你的feature branch生成修改后, 你又回过头去修改了的你的master(分叉了):

你有两种方法用来合并feature到master: 直接使用merge或者rebase后再merge. 下图展示第二种方法:

rebase是一个常用的方法, 用来集成上流的change到你的本地仓储. 换句话来说, rebase就像是在说"我想将我的修改base到每个人做的commit之后".

例子

时间: 2024-10-05 23:46:32

git rebase的相关文章

git rebase使用

git rebase在<git权威指南>一书中被翻译为变基,听着有些别扭吧,变基变基,变成库克了,在<pro git>中被翻译成衍合,所以以后git rebase均使用<pro git>中的翻译方式. 在git中将个分支中的修改整合到另一个分支的办法有两种:merge和rebase,现在又如下使用情景,在master分支的第3次提交产生一个分支dev,在这个dev分支上做了两次提交,而此时master分支由于某些原因又进行了两次提交,现在需要将dev分支和master分

git的提交突出--git rebase之abort、continue、skip

(1)应用实例描述 假设在github或者gitoschina上建立了一个项目,默认分支为master分支,远程master分支上c.sh文件内容: 开发者A.B分别将项目拷贝到自己本地进行开发 某一天,开发者B提交c.sh,并且提交成功, 之后,开发者A在本地代码并没有和远程master分支的代码同步的情况下,对本地的c.sh进行了修改,修改后c.sh内容如下: 修改后,开发者A准备将代码提交到远程master分支上. (2)引入问题 假设开发者A提交过程如下: $ git add c.sh

git rebase -i

使用rebase -i会在终端出现一个交互页面. 在这个交互页面中我们可以对要rebase的commit做一定的修改. 用法 git rebase -i <master> 把当前的分支的commit放在<base>后面, -i会打开一个编辑器, 在这你可以为每一个commit输入一个命令, 这个命令决定了如何把单个的commit传输到new base. 还可以改变commit列表的顺序. 讨论 大多数开发者喜欢在merge一个分支到master的时候使用rebase -i打磨我们这

闲谈 git merge 与 git rebase 的区别

前言 相信大部分使用 Git 的朋友都会遇见相同的疑问,并且也从网上搜索了不少资料.那么,为什么我还要写这篇文章呢?因为我想尝试从自己的角度解释这个问题,如果能给到大家灵光一闪的感悟,便善莫大焉啦.估计点进来的朋友也对 merge 和 rebase 有了一定了解,所以我也就不浪费篇幅再去详细介绍 merge 和 rebase,让我们直入主题吧. merge 与 rebase 的区别 merge 现在假设我们有一个主分支 master 及一个开发分支 deve,仓库历史就像这样:现在如果在 mas

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

将多次commit合并,只保留一次提交历史. PS:在我练习的时候,将一个文件的代码做了多次修改,而且每次修改都给提交了,这几次改动的目的都一样,比如说修改RADEME.md,但是每次改动的只是一个小小的代码,但是提交历史上的显示看着会很乱,所以需要合并之前的多次提交历史. 1.首先使用git log查看一下提交历史[--oneline作用是将每个提交放在一行显示] 这样在git中看到的是4次提交(更改txt),有点冗余,需要做的是将4次commit合并为一次 2. git 压缩  git re

聊下 git rebase -i

在使用git开发的时候经常会面临一个常见的问题.多个commit 需要合并为一个完整的commit提交. 我们先说第一个合并多个commit为一个完整的commit 我先基于develop主分支拉出一个功能分支(每个人和每个公司对分支的管理都不太一样,这里不需要太纠结.).这里的develop是开发主分支,所有的开发功能代码都需要回归到这个develop分支中去. git branch -a –vv develop_fixbug_imageprint 分支是我基于远程develop分支拉出来的开

git rebase简介(基本篇)

一.基本 git rebase用于把一个分支的修改合并到当前分支. 假设你现在基于远程分支"origin",创建一个叫"mywork"的分支. $ git checkout -b mywork origin 假设远程分支"origin"已经有了2个提交,如图 现在我们在这个分支做一些修改,然后生成两个提交(commit). $ vi file.txt $ git commit $ vi otherfile.txt $ git commit ...

团队开发里频繁使用 git rebase 来保持树的整洁好吗?

用了以后, 树可以非常清晰, 某种程度上便于追踪, 但是 push --force 就多多了,不用呢, 合并没有远程仓库被修改的麻烦, 可是追踪又不清晰... git rebase是对commit history的改写.当你要改写的commit history还没有被提交到远程repo的时候,也就是说,还没有与他人共享之前,commit history是你私人所有的,那么想怎么改写都可以. 而一旦被提交到远程后,这时如果再改写history,那么势必和他人的history长的就不一样了.git

git rebase 与 git merge

Initial:new_branch     n1--n2                       |master    m1--m2--m3------------------------------------1. Merge $(master) git merge new_branchmaster m1--m2--n1--m3--n2--Merge branch new_branch 2. Rebase$(master) git rebase master new_branch执行过后