繁体   English   中英

git pull 和 git fetch + git rebase 有什么区别?

[英]What is the difference between git pull and git fetch + git rebase?

另一个问题git pull就像git fetch + git merge

但是git pullgit fetch + git rebase什么区别?

从您的问题中可以很明显地看出,您实际上只是在询问git mergegit rebase之间的区别。

因此,让我们假设您处于常见情况 - 您已经在 master 分支上完成了一些工作,并且您从 origin 中拉取了一些工作,这也做了一些工作。 获取之后,事情看起来像这样:

- o - o - o - H - A - B - C (master)
               \
                P - Q - R (origin/master)

如果你此时合并(git pull 的默认行为),假设没有任何冲突,你最终会得到这个:

- o - o - o - H - A - B - C - X (master)
               \             /
                P - Q - R --- (origin/master)

另一方面,如果你做了适当的变基,你最终会得到这个:

- o - o - o - H - P - Q - R - A' - B' - C' (master)
                          |
                          (origin/master)

在这两种情况下,您的工作树的内容应该是相同的; 你刚刚创造了一个不同的历史导致它 rebase 重写了你的历史,使它看起来好像你是在 origin 的新 master 分支( R )之上提交的,而不是你最初提交的地方( H )。 如果其他人已经从你的 master 分支中拉取了资源,你永远不应该使用 rebase 方法。

最后,请注意,您实际上可以通过将配置参数branch.<name>.rebase为 true 来为给定分支设置git pull以使用 rebase 而不是合并。 您也可以使用git pull --rebase对单次拉取执行此git pull --rebase

域名注册地址:

git pull就像运行git fetch然后运行git merge
git pull --rebase就像git fetch然后git rebase

回复你的第一句话,

git pull就像一个git fetch + git merge

“在默认模式下,git pull 是git fetch后跟git merge FETCH_HEAD 的简写”更准确地说, git pull使用给定的参数运行git fetch ,然后调用git merge将检索到的分支头合并到当前分支中”

(参考: https : //git-scm.com/docs/git-pull


对于您的第二个陈述/问题:

'但是git pull VS git fetch + git rebase什么区别'

同样,来自同一来源:
git pull --rebase

“使用 --rebase,它运行 git rebase 而不是 git merge。”


现在,如果你想问

' mergerebase的区别'

这也在这里回答:
https://git-scm.com/book/en/v2/Git-Branching-Rebasing
(改变版本历史记录方式的区别)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM