Git合并 - pull和merge的区别

3
在我的.gitconfig中,我已经将rebase设置为默认拉取选项。我正在尝试理解以下两者之间的区别: git merge origin/developgit pull origin develop 目前我所了解的是git pull origin develop会将来自origin(远程)的develop分支拉取到当前分支。但是git merge origin/develop也是这样吗?
谢谢!

已经有答案了 https://dev59.com/7mQm5IYBdhLWcg3wyhZE - MangduYogii
可能是git merge origin/master和git pull之间的区别的重复问题。 - phd
https://stackoverflow.com/search?q=%5Bgit%5D+difference+%22git+pull%22+%22git+merge%22 - phd
2个回答

7

git pull命令会以给定参数运行git fetch,并调用git merge将检索到的分支头合并到当前分支中。

该命令

git pull <remote> <branch>

实际上与

一样
git fetch <remote>
git merge <remote>/<branch>

因此,在实际应用中,两者没有实质性的区别。

git pull origin master

并且

git fetch origin
git merge origin/master

为了更好地理解,请查看此文档 拉取和合并

所以,无论我采取哪种方式,都没有区别。这就是我想确认的全部内容。 - ha9u63a7

1
这里的根本区别在于rebase和merge的工作方式不同。
Rebase会回退到分支之间的共享点,然后逐个重放提交到顶部。(不引入新的合并提交)
Merge会将分支的总和合并在顶部,产生1个新的合并提交,其中包含所有内容。
Rebase更好,因为它以更清洁的方式保留了历史记录。
您也可以尝试使用git merge BRANCH--ff-only 这类似于rebase,因为它只会重放提交并保留历史记录。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接