“git pull”和“git pull origin master”的区别是什么?

28

git pullgit pull origin master有什么区别?

如果我在除master以外的分支上,这两个命令会产生不同的结果吗?


4
如果你是Git新手,我建议你在一段时间内避免使用git pull。首先,让自己熟悉git fetchgit merge。如果你打算使用git rebase,也要熟悉它。然后,稍后再使用git pull作为方便命令,知道它所做的就是用一些参数运行git fetch,接着是git merge或带有其他参数的git pull。只有当你熟悉这两个命令时,整个过程才会有意义。在此之前,它是不容易理解的! - torek
1
话虽如此,简短回答你的问题是,如果你现在不在“主分支”上,它们通常是不同的。 - torek
4个回答

42

请记住,pull 操作是一次 fetch 和 merge 操作。

  • git pull origin master 从 origin 远程仓库的 master 分支获取提交记录(到本地的 origin/master 分支),然后将 origin/master 合并到当前所在的分支。

  • git pull 只有在当前所在的分支跟踪了一个上游分支时才能使用。例如,如果当前所在的分支跟踪了 origin/master 分支,git pull 就等同于 git pull origin master


好的解释。简短明了,直戳重点。谢谢。 - kgbph
“pull” 是指获取并合并代码,这样说是否过于简单化了呢? - Peter Mortensen

13

首先,让我们了解一下 git pull 是什么:

  • git pull 命令用于从远程仓库获取和下载内容,并立即更新本地仓库以匹配该内容。 git pull 命令是 git fetchgit merge 的组合。 git pull 将从远程仓库下载内容。下载完成后,git merge 将内容合并到您的本地仓库中。将创建一个新的合并提交,并将 HEAD 更新为指向新提交。

  • 现在我们知道 git pull 可以做什么,当我们执行 git pull origin master 时,它会从原始仓库中获取 master 分支的副本,并将其与您所检出的当前分支合并。

欲了解更多信息,请访问此链接


3

Git pull的作用等同于 Git fetch + Git merge。

git pull origin master 假设你当前在本地的master分支上,运行这个命令,Git 会从远程的origin/master拉取已提交的代码,然后合并到本地的master分支上。

git pull 这是一种将代码合并到本地跟踪远程分支的快捷方式。

那么问题来了,如何让本地分支跟踪远程分支呢?

据我所知,有两种常见方法:
1. 首次推送时使用以下命令: git push -u origin branch_name -u 标志告诉 Git 让本地分支跟踪远程分支。

  1. 为现有的远程分支创建本地分支时使用以下命令: git branch --track branch_name origin/branch_name

2

从文档中可以看到:

https://git-scm.com/docs/git-pull

git pull [<options>] [<repository> [<refspec>…​]]

git-pull - Fetch from and integrate with another repository or a local branch

...

Default values for and are read from the "remote" and "merge" configuration for the current branch as set by git-branch[1] --track.

所以

  1. 如果你的分支设置为“master”,那么git pull和git pull origin master将执行相同的操作。

  2. 如果你的分支设置为“master”,Git pull和git pull origin some-other-branch将不同。

  3. 如果你的分支设置为“some-other-branch”,那么Git pull和git pull origin master将不同。


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