git rebase

转载 2015年07月08日 11:58:32

rebase

假设你现在基于远程分支"origin",创建一个叫"mywork"的分支。

$ git checkout -b mywork origin

现在我们在这个分支做一些修改,然后生成两个提交(commit).

$ vi file.txt
$ git commit
$ vi otherfile.txt
$ git commit
...

但是与此同时,有些人也在"origin"分支上做了一些修改并且做了提交了. 这就意味着"origin"和"mywork"这两个分支各自"前进"了,它们之间"分叉"了。





在这里,你可以用"pull"命令把"origin"分支上的修改拉下来并且和你的修改合并; 结果看起来就像一个新的"合并的提交"(merge commit):

但是,如果你想让"mywork"分支历史看起来像没有经过任何合并一样,你也许可以用 git rebase:

$ git checkout mywork
$ git rebase origin

这些命令会把你的"mywork"分支里的每个提交(commit)取消掉,并且把它们临时 保存为补丁(patch)(这些补丁放到".git/rebase"目录中),然后把"mywork"分支更新 到最新的"origin"分支,最后把保存的这些补丁应用到"mywork"分支上。

当'mywork'分支更新之后,它会指向这些新创建的提交(commit),而那些老的提交会被丢弃。 如果运行垃圾收集命令(pruning garbage collection), 这些被丢弃的提交就会删除. (请查看 git gc)

现在我们可以看一下用合并(merge)和用rebase所产生的历史的区别:

在rebase的过程中,也许会出现冲突(conflict). 在这种情况,Git会停止rebase并会让你去解决 冲突;在解决完冲突后,用"git-add"命令去更新这些内容的索引(index), 然后,你无需执行 git-commit,只要执行:

$ git rebase --continue

这样git会继续应用(apply)余下的补丁。

在任何时候,你可以用--abort参数来终止rebase的行动,并且"mywork" 分支会回到rebase开始前的状态。

$ git rebase --abort

git rebase 使用详解

rebase 图示 merge rebase 总结rebase本地两个分支 一个我的分支 test 一个主分支 master 现在我修改的部分要合并到 master 上,可以有两种选择 merge ...
  • sambrown123
  • sambrown123
  • 2015年03月07日 22:42
  • 8316

git rebase解决提交冲突

git rebase 把更新生成patch,rebase后自动应用patch的过程。 没有使用git pull直接merge 是因为,回家把远程库merge的比较乱 操作 1、更改完代码后,git ...
  • sea_snow
  • sea_snow
  • 2016年11月29日 09:55
  • 3192

git-rebase 超级详细讲解,我竟然看完了

转自:http://blog.chinaunix.net/uid-27714502-id-3436696.html 命令格式 我们先来看看git-rebase的命令格式: git r...
  • laxian2009
  • laxian2009
  • 2016年01月27日 14:21
  • 6108

git命令之git rebase 的用法

rebase 假设你现在基于远程分支"origin",创建一个叫"mywork"的分支。 $ git checkout -b mywork origin 现在我...
  • wangjia55
  • wangjia55
  • 2013年01月10日 16:47
  • 30079

git rebase的原理之多人合作分支管理

在上篇的Git rebase -i 交互变基,体验艺术般的命令文章中,我有两点为忽略了,现在补充说明下 1、在git rebase -i 后 ,用git push -f origin local_br...
  • zwlove5280
  • zwlove5280
  • 2015年07月01日 12:48
  • 2867

Git rebase 简明用法

不知道为什么上网查的Git rebase 用法都这么
  • herbert5069
  • herbert5069
  • 2014年04月20日 23:20
  • 11806

Git rebase -i 交互变基,体验艺术般的命令

上篇的Git之反悔中,最后提到用git reset做一些反悔的动作,有没有发现一个问题,那就是我前期做的工作都浪费了,要重新提交,要是需要后悔的操作在第十个呢,尼玛还要不要玩,今天就是以这个事情为出发...
  • zwlove5280
  • zwlove5280
  • 2015年06月26日 14:32
  • 2005

使用git rebase合并多次commit

将多次commit合并,只保留一次提交历史。 1.首先使用git log查看一下提交历史 [demo@ubuntu1204:zh_cn(bugfix/ycs-MOS-1503-notify-templ...
  • yangcs2009
  • yangcs2009
  • 2015年07月31日 10:50
  • 28005

Git Rebase教程: 用Git Rebase让时光倒流

https://linux.cn/article-4046-1.html 想象一下你正在开发一个激进的新功能。这将是很灿烂的但它需要一段时间。您这几天也许是几个星期一直在做这个。 ...
  • origin_lee
  • origin_lee
  • 2016年03月12日 23:09
  • 1777

git rebase后丢失本地commit记录

问题描述: 提交代码时,rebase了两次,本地commit记录丢失了 两种解决方法: (原理是一样的)  找到项目目录下的git文件 .git\logs\refs\heads\branchn...
  • lxbwolf
  • lxbwolf
  • 2016年08月03日 15:20
  • 1648
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:git rebase
举报原因:
原因补充:

(最多只允许输入30个字)