fedorqui Asked: 2020-07-05 02:16:32 +0800 CST 2020-07-05 02:16:32 +0800 CST 2020-07-05 02:16:32 +0800 CST “git rebase”和“git merge”有什么区别? 772 我使用 Git,并且经常需要将其他人的更改合并到我工作的分支中。发生这种情况时,有人推荐我使用git rebase和其他人git merge。 因此,我想知道:git rebase和有什么区别git merge? git 1 Answers Voted Best Answer fedorqui 2020-07-05T02:16:32+08:002020-07-05T02:16:32+08:00 对急于求知的读者的总结:和git rebase你在一起会有更清晰的历史,所以它通常是首选。 当你这样做git rebase: 本地提交暂时从分支中删除。 a 被执行git pull。 再次插入本地提交。 这意味着您的所有本地提交都在远程提交之后最后出现。也就是说,如果你这样做git log了,来自你退步的分支的提交看起来好像它们更旧,而不管它们是什么时候做出的。 假设您有 3 次提交A, B, C: 然后 Daniel 出现并创建了一个 commit D。然后 Enrique 创建一个提交E: 显然,这种冲突必须以某种方式解决。有两种方法可以做到这一点: 合并: 两个提交D和仍然E存在,但我们创建了一个合并提交M,它继承了两个提交D和E. 然而,这创造了菱形结构,这让很多人感到困惑。 重新定位: 我们创建一个 commit R,其内容与上述提交相同M。但是,我们加载提交E,就好像它从不存在一样(由点显示,在淡入淡出的线上)。根据这个覆盖,它E应该是 Enrique 的本地提交,并且不应该被提交push到任何存储库。这种方法的优点是避免了菱形形状并且历史保持线性,这是大多数开发人员所欣赏的。 以一种不太直观但更具描述性的方式,我们可以将其称为如下: git-rebase– 依次生成一系列提交,以便它们可以直接应用于节点的头部。 当你rebase对你的分支做 a 时,你是在告诉 Git 假装你已经checkout干净地切换了分支 (),然后从那里开始工作。这会将更改变成其他人可以查看的干净且概念上简单的内容。当另一个分支上有新的更改时,您可以再次重复此过程:您将始终在分支的头部得到一组干净的更改。 git-merge– 加入两个或更多的发展历史 当你自己取消merge加入一个分支时,你就加入了两者的历史。如果你再次这样做,你将开始创建一系列交错的历史:丹尼尔的一些变化,哈利的一些变化,丹尼尔的一些变化......这可能是混乱的。 因此,用白银说话,就好像我们在说“我们有两个父母,我们想要一个儿子”。 此答案包含“git merge”和“git rebase”有什么区别的前四个答案的内容?( 1 , 2 , 3和4 5 )。
对急于求知的读者的总结:和
git rebase
你在一起会有更清晰的历史,所以它通常是首选。当你这样做
git rebase
:git pull
。这意味着您的所有本地提交都在远程提交之后最后出现。也就是说,如果你这样做
git log
了,来自你退步的分支的提交看起来好像它们更旧,而不管它们是什么时候做出的。假设您有 3 次提交
A
,B
,C
:然后 Daniel 出现并创建了一个 commit
D
。然后 Enrique 创建一个提交E
:显然,这种冲突必须以某种方式解决。有两种方法可以做到这一点:
合并:
两个提交
D
和仍然E
存在,但我们创建了一个合并提交M
,它继承了两个提交D
和E
. 然而,这创造了菱形结构,这让很多人感到困惑。重新定位:
我们创建一个 commit
R
,其内容与上述提交相同M
。但是,我们加载提交E
,就好像它从不存在一样(由点显示,在淡入淡出的线上)。根据这个覆盖,它E
应该是 Enrique 的本地提交,并且不应该被提交push
到任何存储库。这种方法的优点是避免了菱形形状并且历史保持线性,这是大多数开发人员所欣赏的。以一种不太直观但更具描述性的方式,我们可以将其称为如下:
git-rebase
– 依次生成一系列提交,以便它们可以直接应用于节点的头部。当你
rebase
对你的分支做 a 时,你是在告诉 Git 假装你已经checkout
干净地切换了分支 (),然后从那里开始工作。这会将更改变成其他人可以查看的干净且概念上简单的内容。当另一个分支上有新的更改时,您可以再次重复此过程:您将始终在分支的头部得到一组干净的更改。git-merge
– 加入两个或更多的发展历史当你自己取消
merge
加入一个分支时,你就加入了两者的历史。如果你再次这样做,你将开始创建一系列交错的历史:丹尼尔的一些变化,哈利的一些变化,丹尼尔的一些变化......这可能是混乱的。因此,用白银说话,就好像我们在说“我们有两个父母,我们想要一个儿子”。