git fetch 的语法是什么意思
what does the syntax of git fetch mean
假设我执行 git fetch origin
并且得到以下输出:
From origin
* [new branch] develop -> origin/develop
* [new branch] new -> origin/new
这个语法是什么意思?
有时它会输出不同的东西,如果我这样做 git fetch origin develop
我会得到以下输出:
From origin
* branch develop -> FETCH_HEAD
f3beeb4..2b38122 develop -> origin/develop
所以这里的语法是不同的。为什么?如果能对这些语法中的每一个进行简短描述,我将不胜感激。
编辑:
抱歉大家没有更清楚地回答我的问题。我实际上对 syntax/logic 这些作品感兴趣:
* [new branch] develop -> origin/develop
* [new branch] new -> origin/new
* branch develop -> FETCH_HEAD
f3beeb4..2b38122 develop -> origin/develop
而不是这个 git fetch origin
。
git fetch
更新远程跟踪分支(在本例中为 new
和 develop
)。
git fetch origin develop
将 develop
分支的提取值存储在 .git/FETCH_HEAD
中。
更新:
找到了一个 Whosebug post,其中描述很好 (here)。
git-fetch 的文档说得比较清楚。
git fetch origin
真的是git fetch <repository>
。您告诉 Git 从哪里获取更新,它不一定是以前添加的遥控器 - 如果您愿意,它可以是 URL。
在您的项目中,您可以拥有任意数量的遥控器;不过,通常情况下,只需要一个遥控器,按照惯例,它是 origin
.
从文档中可以看出,如果省略,origin
是默认值,除非您配置了上游分支:
When no remote is specified, by default the origin
remote will be used, unless there’s an upstream branch configured for the current branch.
如果您只有一个遥控器,那么这样做几乎毫无意义;如果你想专门从 不同的 远程获取,这是你实际使用此表单的时候。
git fetch origin develop
将 <refspec>
参数添加到上述命令。它基本上是告诉 Git 要获取哪个 ref,以及要更新哪个本地 ref。它将把这次获取的结果存储在 short-lived ref called FETCH_HEAD
中, 而不是 直接分支。
git fetch origin
基本上更新您的远程跟踪分支,这意味着所有远程存储库分支都被复制到您的本地存储库。一般命令是 git fetch <remote>
,在这种情况下 remote
是 origin
。然后输出显示已下载的分支:
develop
,它是一个并指向(远程)origin/develop
(因此是 ->
)并且是一个 new branch
new
指向(再次远程)origin/new
并且也是 new branch
git fetch origin develop
或通常的 git fetch <remote> <branch>
与上述相同,但仅获取指定的 <branch>
,在您的情况下为 develop
。
参考文献:
git fetch
将连接到远程存储库。它将(默认情况下)在本地存储库中创建 "remote branches",它们不过是普通的引用,如 remotename/branchname
.
如果在远程存储库上检测到新分支,git fetch
将创建一个新的 "remote branch":
* [new branch] new -> origin/new
在远程端(称为 origin 的远程)有一个名为 "new" 的新分支。 git
因此在此存储库中创建 "origin/new"。
如果本地 "remote branch" 与远程仓库上的分支不同,git
将更新它:
f3beeb4..2b38122 develop -> origin/develop
这里 "origin/develop" 指向提交 f3beeb4 但有人推送到远程仓库,因此它现在指向 2b38122。因此 git
会将 "remote branch" 从 f3beeb4 更新为 2b38122。
如果您指定一个明确的分支名称,git
会将其存储在一个名为 "FETCH_HEAD" 的特殊引用中。这将像这样打印:
* branch develop -> FETCH_HEAD
假设我执行 git fetch origin
并且得到以下输出:
From origin
* [new branch] develop -> origin/develop
* [new branch] new -> origin/new
这个语法是什么意思?
有时它会输出不同的东西,如果我这样做 git fetch origin develop
我会得到以下输出:
From origin
* branch develop -> FETCH_HEAD
f3beeb4..2b38122 develop -> origin/develop
所以这里的语法是不同的。为什么?如果能对这些语法中的每一个进行简短描述,我将不胜感激。
编辑:
抱歉大家没有更清楚地回答我的问题。我实际上对 syntax/logic 这些作品感兴趣:
* [new branch] develop -> origin/develop
* [new branch] new -> origin/new
* branch develop -> FETCH_HEAD
f3beeb4..2b38122 develop -> origin/develop
而不是这个 git fetch origin
。
git fetch
更新远程跟踪分支(在本例中为 new
和 develop
)。
git fetch origin develop
将 develop
分支的提取值存储在 .git/FETCH_HEAD
中。
更新:
找到了一个 Whosebug post,其中描述很好 (here)。
git-fetch 的文档说得比较清楚。
git fetch origin
真的是git fetch <repository>
。您告诉 Git 从哪里获取更新,它不一定是以前添加的遥控器 - 如果您愿意,它可以是 URL。在您的项目中,您可以拥有任意数量的遥控器;不过,通常情况下,只需要一个遥控器,按照惯例,它是
origin
.从文档中可以看出,如果省略,
origin
是默认值,除非您配置了上游分支:When no remote is specified, by default the
origin
remote will be used, unless there’s an upstream branch configured for the current branch.如果您只有一个遥控器,那么这样做几乎毫无意义;如果你想专门从 不同的 远程获取,这是你实际使用此表单的时候。
git fetch origin develop
将<refspec>
参数添加到上述命令。它基本上是告诉 Git 要获取哪个 ref,以及要更新哪个本地 ref。它将把这次获取的结果存储在 short-lived ref calledFETCH_HEAD
中, 而不是 直接分支。
git fetch origin
基本上更新您的远程跟踪分支,这意味着所有远程存储库分支都被复制到您的本地存储库。一般命令是 git fetch <remote>
,在这种情况下 remote
是 origin
。然后输出显示已下载的分支:
develop
,它是一个并指向(远程)origin/develop
(因此是->
)并且是一个new branch
new
指向(再次远程)origin/new
并且也是new branch
git fetch origin develop
或通常的 git fetch <remote> <branch>
与上述相同,但仅获取指定的 <branch>
,在您的情况下为 develop
。
参考文献:
git fetch
将连接到远程存储库。它将(默认情况下)在本地存储库中创建 "remote branches",它们不过是普通的引用,如 remotename/branchname
.
如果在远程存储库上检测到新分支,git fetch
将创建一个新的 "remote branch":
* [new branch] new -> origin/new
在远程端(称为 origin 的远程)有一个名为 "new" 的新分支。 git
因此在此存储库中创建 "origin/new"。
如果本地 "remote branch" 与远程仓库上的分支不同,git
将更新它:
f3beeb4..2b38122 develop -> origin/develop
这里 "origin/develop" 指向提交 f3beeb4 但有人推送到远程仓库,因此它现在指向 2b38122。因此 git
会将 "remote branch" 从 f3beeb4 更新为 2b38122。
如果您指定一个明确的分支名称,git
会将其存储在一个名为 "FETCH_HEAD" 的特殊引用中。这将像这样打印:
* branch develop -> FETCH_HEAD