git pull命令用于提取和下载远程仓库的内容并且立即更新到本地仓库。该命令其实是git fetch和git merge的整合。首先会基于HEAD指向的本地分支执行git fetch,一旦内容下载完毕,会进入merge阶段。创建一个新的merge commit,然后将HEAD指向这个merge commit。
假设我们有如下git分支图:

此时git pull会下载所有从分叉开始的改动,E。git pull会提取远程分叉的commitA-B-C。然后创建一个本地的merge commit,包含分叉的远程改动。git分支图如下所示:

H为新的merge commit,包含远程commits A-B-C。
若使用git pull --rebase,则git分支图如下:

git pull --rebase没有创建一个新的commit,而是将远程commit A-B-C复制并且追加到本地仓库。
网友评论