由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - GIT的rebase和merge到底有啥不同?
相关主题
求教:没接触过version control的新手如何学习svn和gitSvn vs git
以前用git 现在得用hg 学的好头疼[合集] 大家在公司都是怎么用source safe的?
说到git,有个问题。怎么同一个branch里,同时操作两组commitGit不能push,说workplace有文件改动,commit或stash了才行
Git 用不下去了CVS vs. Subversion vs. Git
SVN howto: branch working copy changes without committing? (转载)现在Google,Facebook等如何manage software release的?
组里一个资深人士今天严肃地对我说老板迷上了git,有点烦啊
Win环境下version control大家都用那些?如何sort and merge n 个sorted linked list
GIT如何跟别人share repo?请教个git的问题
相关话题的讨论汇总
话题: rebase话题: merge话题: master话题: branch话题: commit
进入Programming版参与讨论
1 (共1页)
d********t
发帖数: 9628
1
看tutorial好像说rebase的话回重整history,不过我试了试根merge没任何不同啊。
c*********e
发帖数: 16335
2
rebase就是把它放到主线上,不再是branch.这个很少用。
一般是用merge.

【在 d********t 的大作中提到】
: 看tutorial好像说rebase的话回重整history,不过我试了试根merge没任何不同啊。
d********t
发帖数: 9628
3
不一定啊,可以指定branch名。

【在 c*********e 的大作中提到】
: rebase就是把它放到主线上,不再是branch.这个很少用。
: 一般是用merge.

c*********e
发帖数: 16335
4
对呀,就是并入主线,成了base,不再是个分支。

【在 d********t 的大作中提到】
: 不一定啊,可以指定branch名。
g*****g
发帖数: 34805
5
rebase是你在支线上,别人的改动已经merge到了主线上,你在支线上做rebase就能把
别人的改动放入你的支线,而且在你改动的前头。这样
保证历史是干净的,你的改动在最后面。推荐的做法就是经常rebase,通过code
review之后,做一个squash然后merge到主线上。
如果你把主线merge到支线上, merge的部分就在你的修改后面了。这之后你发现你错了
想把你的revert,就做不了。

【在 d********t 的大作中提到】
: 看tutorial好像说rebase的话回重整history,不过我试了试根merge没任何不同啊。
c*********e
发帖数: 16335
6
http://www.chilsonwilcox.com/autocheck.php?vin=4T1BK46K97U04518

【在 g*****g 的大作中提到】
: rebase是你在支线上,别人的改动已经merge到了主线上,你在支线上做rebase就能把
: 别人的改动放入你的支线,而且在你改动的前头。这样
: 保证历史是干净的,你的改动在最后面。推荐的做法就是经常rebase,通过code
: review之后,做一个squash然后merge到主线上。
: 如果你把主线merge到支线上, merge的部分就在你的修改后面了。这之后你发现你错了
: 想把你的revert,就做不了。

t**r
发帖数: 3428
7
don't ever use rebase.
c*********e
发帖数: 16335
8
right. rebase是把你的branch并入master,这是不好的。

【在 t**r 的大作中提到】
: don't ever use rebase.
w**z
发帖数: 8232
9
每个公司规范不同,我们都是用rebase 的。

【在 c*********e 的大作中提到】
: right. rebase是把你的branch并入master,这是不好的。
c*********e
发帖数: 16335
10
merge的效果是一样的啊。

【在 w**z 的大作中提到】
: 每个公司规范不同,我们都是用rebase 的。
相关主题
组里一个资深人士今天严肃地对我说Svn vs git
Win环境下version control大家都用那些?[合集] 大家在公司都是怎么用source safe的?
GIT如何跟别人share repo?Git不能push,说workplace有文件改动,commit或stash了才行
进入Programming版参与讨论
L***s
发帖数: 1148
11
我们这里(用github)的约定是:
在reviewer写第一条comment之前,推荐rebase支线onto主线;
一旦有了一条comment,就不允许rebase/squash了,只能merge主线into支线,
目的是保持整个review flow,方便reviewer看清楚你采取何种步骤
address他的comments。
关于merge之后的revert,只要diff出一个commit来就可以revert了。

【在 g*****g 的大作中提到】
: rebase是你在支线上,别人的改动已经merge到了主线上,你在支线上做rebase就能把
: 别人的改动放入你的支线,而且在你改动的前头。这样
: 保证历史是干净的,你的改动在最后面。推荐的做法就是经常rebase,通过code
: review之后,做一个squash然后merge到主线上。
: 如果你把主线merge到支线上, merge的部分就在你的修改后面了。这之后你发现你错了
: 想把你的revert,就做不了。

q*c
发帖数: 9453
12
i use it All. the time.
otjerwise it is incredibly dirty when local and remote both commit
frequantly.

【在 t**r 的大作中提到】
: don't ever use rebase.
d********t
发帖数: 9628
13
为啥不好

【在 c*********e 的大作中提到】
: right. rebase是把你的branch并入master,这是不好的。
d********t
发帖数: 9628
14
也可以主线并入质线啊

【在 c*********e 的大作中提到】
: 对呀,就是并入主线,成了base,不再是个分支。
a******n
发帖数: 5925
15
Rebase 把时间顺序理顺了
Merge 不管这个
多人用的repo rebase一下比较好
因为别人可能也有commit
但注意不要在public branch (比如master)上rebase
楼主可能是自己一个repo 在玩吧?
你试试多建几个用户,把时间顺序打乱都commit一些东西
[在 convergence (Rex) 的大作中提到:]
:merge的效果是一样的啊。

:...........
d********t
发帖数: 9628
16
对啊我是一个人搞了两个branch在玩哈哈

【在 a******n 的大作中提到】
: Rebase 把时间顺序理顺了
: Merge 不管这个
: 多人用的repo rebase一下比较好
: 因为别人可能也有commit
: 但注意不要在public branch (比如master)上rebase
: 楼主可能是自己一个repo 在玩吧?
: 你试试多建几个用户,把时间顺序打乱都commit一些东西
: [在 convergence (Rex) 的大作中提到:]
: :merge的效果是一样的啊。
: :

a******n
发帖数: 5925
17
http://www.git-scm.com/book/en/v1/Git-Branching-Rebasing
https://www.atlassian.com/git/tutorials/merging-vs-rebasing
http://gitimmersion.com/lab_31.html
还是看看tutorial吧。

【在 d********t 的大作中提到】
: 对啊我是一个人搞了两个branch在玩哈哈
t*****n
发帖数: 4908
18
rebase会改变sha1 id,merge不会。
比如公司的软件1.0发布了。有bug,需要打补丁。所以在1.0 release branch的基础上
,建立一个"bug_fix"branch。这样的好处是master branch还在继续开发过程中。同时
可以在master branch的基础上,自建一个feature branch,玩玩各种新玩具。
现在bug修复了。补丁也给客户了。接下来就可以把bug_fix merge到master。这样的好
处是同一commit,在bug_fix和master下都是同一sha1 id。如果你用git blame,sha1
id就很重要。当然也可以merge到feature branch。
在feature branch上的东西,只是自己工作。当master有新的commit,可以用git
rebase。这样自己的工作总是在最上面。同时可以融入别人的工作,并减少以后遇到
merge conflict的机会。
t*****n
发帖数: 4908
19
开100个都无所谓。看你怎么用。基本一个bug就对应一个branch。

【在 d********t 的大作中提到】
: 对啊我是一个人搞了两个branch在玩哈哈
d********t
发帖数: 9628
20
我就是看了tutorial然后自己实验发现log里一点区别都没。

【在 a******n 的大作中提到】
: http://www.git-scm.com/book/en/v1/Git-Branching-Rebasing
: https://www.atlassian.com/git/tutorials/merging-vs-rebasing
: http://gitimmersion.com/lab_31.html
: 还是看看tutorial吧。

相关主题
CVS vs. Subversion vs. Git如何sort and merge n 个sorted linked list
现在Google,Facebook等如何manage software release的?请教个git的问题
老板迷上了git,有点烦啊请介绍一下git和github
进入Programming版参与讨论
d********t
发帖数: 9628
21
啥叫sha1id

sha1

【在 t*****n 的大作中提到】
: rebase会改变sha1 id,merge不会。
: 比如公司的软件1.0发布了。有bug,需要打补丁。所以在1.0 release branch的基础上
: ,建立一个"bug_fix"branch。这样的好处是master branch还在继续开发过程中。同时
: 可以在master branch的基础上,自建一个feature branch,玩玩各种新玩具。
: 现在bug修复了。补丁也给客户了。接下来就可以把bug_fix merge到master。这样的好
: 处是同一commit,在bug_fix和master下都是同一sha1 id。如果你用git blame,sha1
: id就很重要。当然也可以merge到feature branch。
: 在feature branch上的东西,只是自己工作。当master有新的commit,可以用git
: rebase。这样自己的工作总是在最上面。同时可以融入别人的工作,并减少以后遇到
: merge conflict的机会。

a9
发帖数: 21638
22
re
我一般是在push到remote前,rebase搞搞,比如调调顺序,有时候一个修改中间为了保
存进度,在提交工作前rebase一下,把他们合并成一个等。
还有提交到远程的时候,rebase一下远程。这样修改在最上面,省得以后合并不容易。

sha1

【在 t*****n 的大作中提到】
: rebase会改变sha1 id,merge不会。
: 比如公司的软件1.0发布了。有bug,需要打补丁。所以在1.0 release branch的基础上
: ,建立一个"bug_fix"branch。这样的好处是master branch还在继续开发过程中。同时
: 可以在master branch的基础上,自建一个feature branch,玩玩各种新玩具。
: 现在bug修复了。补丁也给客户了。接下来就可以把bug_fix merge到master。这样的好
: 处是同一commit,在bug_fix和master下都是同一sha1 id。如果你用git blame,sha1
: id就很重要。当然也可以merge到feature branch。
: 在feature branch上的东西,只是自己工作。当master有新的commit,可以用git
: rebase。这样自己的工作总是在最上面。同时可以融入别人的工作,并减少以后遇到
: merge conflict的机会。

a9
发帖数: 21638
23
就是commit id

础上
同时
的好

【在 d********t 的大作中提到】
: 啥叫sha1id
:
: sha1

r***y
发帖数: 4379
24
要多于一个用户你才能看出rebase和merge区别

【在 d********t 的大作中提到】
: 对啊我是一个人搞了两个branch在玩哈哈
d********t
发帖数: 9628
25
为啥啊

【在 r***y 的大作中提到】
: 要多于一个用户你才能看出rebase和merge区别
s**d
发帖数: 258
26
rebase 是能将分支的修改历史完整的插入到主线

【在 d********t 的大作中提到】
: 看tutorial好像说rebase的话回重整history,不过我试了试根merge没任何不同啊。
s**d
发帖数: 258
27
rebase 并不是为了保证合并更容易,而是使修改历史更线性

【在 a9 的大作中提到】
: re
: 我一般是在push到remote前,rebase搞搞,比如调调顺序,有时候一个修改中间为了保
: 存进度,在提交工作前rebase一下,把他们合并成一个等。
: 还有提交到远程的时候,rebase一下远程。这样修改在最上面,省得以后合并不容易。
:
: sha1

a****i
发帖数: 1182
28
rebase和merge完全不是一个概念啊
A---B---C topic
/
D---E---F---G master
rebase以后变成了
A'--B'--C' topic
/
D---E---F---G master
base就是master上的最最后的push,没merge什么事

【在 d********t 的大作中提到】
: 看tutorial好像说rebase的话回重整history,不过我试了试根merge没任何不同啊。
c*********e
发帖数: 16335
29
rebase后应该是变成这样


D---E---F---G---A'---B'---C' master

【在 a****i 的大作中提到】
: rebase和merge完全不是一个概念啊
: A---B---C topic
: /
: D---E---F---G master
: rebase以后变成了
: A'--B'--C' topic
: /
: D---E---F---G master
: base就是master上的最最后的push,没merge什么事

a****i
发帖数: 1182
30
不会,A'---B'---C'还是在另外的branch,没有在master上

【在 c*********e 的大作中提到】
: rebase后应该是变成这样
:
:
: D---E---F---G---A'---B'---C' master

相关主题
[合集] 很无聊的做了两道code jam以前用git 现在得用hg 学的好头疼
一道MS面试题 (转载)说到git,有个问题。怎么同一个branch里,同时操作两组commit
求教:没接触过version control的新手如何学习svn和gitGit 用不下去了
进入Programming版参与讨论
W*********y
发帖数: 481
31
re

sha1

【在 t*****n 的大作中提到】
: rebase会改变sha1 id,merge不会。
: 比如公司的软件1.0发布了。有bug,需要打补丁。所以在1.0 release branch的基础上
: ,建立一个"bug_fix"branch。这样的好处是master branch还在继续开发过程中。同时
: 可以在master branch的基础上,自建一个feature branch,玩玩各种新玩具。
: 现在bug修复了。补丁也给客户了。接下来就可以把bug_fix merge到master。这样的好
: 处是同一commit,在bug_fix和master下都是同一sha1 id。如果你用git blame,sha1
: id就很重要。当然也可以merge到feature branch。
: 在feature branch上的东西,只是自己工作。当master有新的commit,可以用git
: rebase。这样自己的工作总是在最上面。同时可以融入别人的工作,并减少以后遇到
: merge conflict的机会。

1 (共1页)
进入Programming版参与讨论
相关主题
请教个git的问题SVN howto: branch working copy changes without committing? (转载)
请介绍一下git和github组里一个资深人士今天严肃地对我说
[合集] 很无聊的做了两道code jamWin环境下version control大家都用那些?
一道MS面试题 (转载)GIT如何跟别人share repo?
求教:没接触过version control的新手如何学习svn和gitSvn vs git
以前用git 现在得用hg 学的好头疼[合集] 大家在公司都是怎么用source safe的?
说到git,有个问题。怎么同一个branch里,同时操作两组commitGit不能push,说workplace有文件改动,commit或stash了才行
Git 用不下去了CVS vs. Subversion vs. Git
相关话题的讨论汇总
话题: rebase话题: merge话题: master话题: branch话题: commit