我只是不明白这一点。我在网上和书籍上阅读了很多东西,但有些东西并没有留在我的脑海里。有人可以给我以下的虚拟版本吗:
- git fetch 与 pull
- git merge 与 rebase
最佳答案
获取与 pull
fetch
将从远程*分支下载任何更改,更新您的存储库数据,但保持本地*分支不变。
pull
将执行 fetch
并将更改merge
到您的本地分支。
有什么区别? pull
使用 pull 分支的更改更新您的本地分支。 fetch
不会推进您的本地分支。
merge 与 rebase
鉴于以下历史:
C---D---E local / A---B---F---G remote
merge
将两个开发历史连接在一起。它通过在远程分支之上发散之后重放本地分支上发生的更改并将结果记录在新的提交中来实现这一点。此操作保留每个提交的祖先。
merge
的效果是:
C---D---E local / \ A---B---F---G---H remote
rebase
将获取本地分支中存在的提交,并将它们重新应用到远程分支之上。此操作会重写您本地提交的祖先。
rebase
的效果是:
C'--D'--E' local / A---B---F---G remote
有什么区别? merge
不会更改提交的祖先。一个 rebase
重写本地提交的祖先。
*
这个解释假设当前分支是一个本地分支,并且这个分支被指定为参数给fetch
, pull
, merge
,或者rebase
是远程分支。这是通常的情况。例如,pull
将从指定 分支下载任何更改,更新您的存储库并将更改 merge
到当前 分支。
关于git - 在 git 中,fetch 与 pull 有何不同,merge 与 rebase 有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14894768/