"git pull" 的默认行为是什么?

14

为什么使用git pull命令会拉取包括新建的远程分支在内的所有内容,但是使用git pull origin master命令却不会呢?

我正在使用git version 2.9.3.windows.2版本。

3个回答

10

当您未指定任何分支时,将使用默认设置。默认情况下会获取并更新远程仓库中所有分支。

有关详细信息,请参阅文档:

当您未指定任何分支时,将使用默认设置。默认意味着获取并更新所有存在于远程仓库中的分支。

git pull [options] [<repository> [<refspec>…​]]
<refspec>指定要获取的引用和要更新的本地引用。如果命令行上没有出现<refspec>,则从remote.<repository>.fetch变量中读取要获取的引用(请参见git-fetch[1])。

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

文档指出:

通常情况下,你会通过定期、反复地从同一远程存储库中获取内容来与其交互。为了跟踪这样一个远程存储库的进度,git fetch 允许你配置remote.<repository>.fetch配置变量。

这种变量通常看起来像这样:

[remote "origin"]
  fetch = +refs/heads/*:refs/remotes/origin/*

上面的例子将获取在 origin 中存在的所有分支(即与值的左侧匹配的任何 ref,refs/heads/*)并更新 refs/remotes/origin/* 层次结构中相应的远程跟踪分支。

来源:https://git-scm.com/docs/git-fetch#CRTB


6
在通俗易懂的语言中,git pull从你的远程仓库获取所有内容(包括新分支和更新旧分支),默认情况下,它会为origin执行此操作。如果你有其他的远程仓库,比如upstream,你需要指定它,例如git pull upstream,这将从upstream更新所有内容。

1

这非常简单。

当你执行git pull命令时,无论有没有钩子和过滤器,所有内容都会被添加到本地。简而言之,你会从远程获取所有内容,并更新.git文件夹。你可以进入.git/logs/refs/remotes/origin/文件夹,查看本地所有分支。

所以,现在我从命令行输入git pull

幕后发生的事情与你拥有的本地分支无关。它连接到源头,将源头中的所有内容获取到本地。

但是,当我键入git pull origin master时。在这种情况下,你需要一个最新的主分支。然后只有主分支被拉取并刷新为与远程相同。

因此,在Git语言中,origin master是一种路径规范。


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