git rebase 与 git merge

Initial:
new_branch     n1--n2
                       |
master    m1--m2--m3
------------------------------------
1. Merge
$(master) git merge new_branch
master m1--m2--n1--m3--n2--Merge branch new_branch

2. Rebase
$(master) git rebase master new_branch
执行过后自动切换到 new_branch
new_branch m1--m2--m3--n1--n2

$(new_branch) git checkout master
$(master) git merge new_branch
Fast-forward
master m1--m2--m3--n1--n2

3. Rebase --onto
third_branch                t1--t2
                                  |
new_branch         n1--n2
                           |
master        m1--m2--m3

master, new_branch: no changes m1--m2--m3
third_branch m1--m2--m3--t1--t2
$(master) git merge third_branch
Fast-forward
master m1--m2--m3--t1--t2
$(master) git rebase master new_branch
执行过后自动切换到 new_branch
new_branch m1--m2--m3--t1--t2--n1--n2
git checkout master
$(master) git merge new_branch
Fast-forward
master m1--m2--m3--t1--t2--n1--n2
删除无用的分支
git branch -d new_branch
git branch -d third_branch

时间: 2024-10-13 12:20:27

git rebase 与 git merge的相关文章

git rebase VS git merge

git rebase是对commit history的改写.当你要改写的commit history还没有被提交到远程repo的时候,也就是说,还没有与他人共享之前,commit history是你私人所有的,那么想怎么改写都可以. 而一旦被提交到远程后,这时如果再改写history,那么势必和他人的history长的就不一样了.git push的时候,git会比较commit history,如果不一致,commit动作会被拒绝,唯一的办法就是带上-f参数,强制要求commit,这时git会以

git rebase 和 git merge的区别

原文链接:http://zires.info/tag/git-merge/ git merge是用来合并两个分支的. # 将b分支合并到当前分支git merge b git cherry-pick可以选择某一个分支中的一个或几个commit(s)来进行操作.例如,假设我们有个稳定版本的分支,叫v2.0,另外还有个开发版本的分支v3.0,我们不能直接把两个分支合并,这样会导致稳定版本混乱,但是又想增加一个v3.0中的功能到v2.0中,这里就可以使用cherry-pick了. # 先在v3.0中查

Git----拉取远程分支,git pull,git rebase,git pull --rebase的区别

git pull 相当于自动的 fetch 和 merge 操作,会试图自动将远程库合并入本地库,在有冲突时再要求手动合并. git rebase 可以确保生产分支commit是一个线性结构,方便rollback.其实生产也可以选择打tag来发布. 注:通过rebase可以确保主分支commit history线性结构上每个commit点都是相对独立完整的功能单元.除了美感,这样做也有助于团队间的分工协作,比随便merge效果好. git pull --rebase(推荐用这个) 把本地 rep

git rebase 和git reset

http://blog.csdn.net/trochiluses/article/details/8996431 I would like to know how to delete a commit. By "delete", I mean it is as if I didn't make that commit, and when I do a push in the future, my changes will not push to the remote branch. h

闲谈 git merge 与 git rebase 的区别

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

[git]rebase和merge

转自:http://blog.csdn.net/wh_19910525/article/details/7554489 Git merge是用来合并两个分支的. git merge b # 将b分支合并到当前分支 git rebase b # 把 b分支合并到当前分支 这个和svn有点类似,svn将branch合并到trunk上,也是在trunk的workcopy上,选择要合并过来的branch进行合并 ----------------------------------- 他们的 原理 如下:

git代码合并:Merge、Rebase的选择

代码合并:Merge.Rebase的选择 Zhongyi Tong edited this page on Dec 7, 2015 · 3 revisions Pages 19 Home 2.1 快速指南 2.2 创建代码仓库 2.3 保存你的更改 2.4 检查仓库状态 2.5 检出之前的提交 2.6 回滚错误的修改 2.7 重写项目历史 3.2 保持同步 3.3 创建Pull Request 3.4 使用分支 3.5 常见工作流比较 4.1 图解Git命令 5.1 代码合并:Merge.Reb

细说git merge & git rebase

git merge和git rebase两个都是用来合并两个分支用的,在使用过程中,这两个概念容易混淆. 在此,对这两个git技巧的用法进行详细描述,希望能帮助一些热爱git的朋友. ------------------------------------------------------------------------------------------------------ git merge是用来合并两个分支的. git merge b # 将b分支合并到当前分支 同样git re

git merge 和 git rebase 小结(转)

git merge是用来合并两个分支的. git merge b # 将b分支合并到当前分支 同样 git rebase b,也是把 b分支合并到当前分支 ----------------------------------- 他们的 原理 如下: 假设你现在基于远程分支"origin",创建一个叫"mywork"的分支. $ git checkout -b mywork origin 假设远程分支"origin"已经有了2个提交,如图 现在我们