什么时候使用git branch --track(开始"watching upstream"的意思)?
When to use git branch --track (meaning of start "watching upstream")?
直到最近,我才知道 --track
切换到 git branch
。我阅读了文档并尝试了这个命令,但它对我来说毫无意义。
--track
When creating a new branch, set up branch.<name>.remote
and branch.<name>.merge
configuration entries to mark the start-point
branch as "upstream" from the new branch. This configuration will tell
git to show the relationship between the two branches in git status
and git branch -v
. Furthermore, it directs git pull
without arguments
to pull from the upstream when the new branch is checked out.
This behavior is the default when the start point is a remote-tracking
branch. Set the branch.autoSetupMerge configuration variable to false
if you want git checkout
and git branch
to always behave as if
--no-track were given. Set it to always
if you want this behavior when the start-point is either a local or remote-tracking branch.
我可以看到人们在想要使分支跟踪上游分支时与此开关有关
这是什么意思?是我还是这个开关描述令人困惑。当我使用术语 upstream
时,我指的是另一个我可以将更改推送到的远程仓库(分支)。
当我开始跟踪远程分支时会发生什么?它在本地如何体现?
分支的上游分支,或tracked 远程分支只是您在使用[时默认与之交互的分支=16=] 和 git push
命令。
将分支拉入您的分支时,您可以明确地执行此操作:
git pull origin the_branch
它将获取远程 origin
然后将 origin/the_branch
合并到您当前的分支。
如果你过去总是拉同一个分支,通过设置一个上游分支,你可以只启动 git pull
:
git branch --set-upstream-to origin/the_branch
git pull
默认情况下,当您从远程分支开始一个新分支时,git 会将其添加为上游分支:
git checkout -b origin/the_branch
# Is equivalent to
git branch --track the_branch origin/the_branch
git checkout the_branch
推的时候几乎一样。
配置 push.default
将确定在使用 git push
时不带参数时要推送到的默认分支。
值为upstream
,直接推入上游分支
使用默认值 simple
,它将执行相同的操作 但前提是本地和上游分支名称相同 .
我让您查看文档以检查其他配置可能性。
您可以使用 -vv
开关查看所有分支的当前上游分支:
$ git branch -vv
* my_branch 33f2d4c [origin/mybranch] a useful commit
master 3ed8e99 [origin/master] Merge
the_branch dbbb8c0 [origin/the_branch] commit on the branch
分支的上游分支也可以用@{upstream}
引用引用:
$ git rev-parse --symbolic-full-name --abbrev-ref @{upstream}
origin/the_branch
推送分支相当于 @{push}
(在 99% 的用例中它将与 @{upstream}
相同):
$ git rev-parse --symbolic-full-name --abbrev-ref @{push}
origin/the_branch
@{upstream}
和 @{push}
之间的区别是针对使用三角工作流的情况:您从只读 "upstream" 项目(通常是约定俗成的远程调用)中拉取upstream
) 并推送到可写存储库。
GitHub.
上使用的分叉工作流程就是这种情况
我为此做了一个(法语)博客 post,here is the auto-translated version。
当您想将本地所做的事情与远程发生的事情联系起来时,您可以设置本地分支来跟踪远程分支。
也就是说,git 会在您执行 git pull
或 git fetch
时知道在哪里查找更改。如果其他人将一些提交推送到远程分支,而你执行 git status
它会告诉你你是远程分支后面的一些提交。或者,如果您在本地进行了一些提交,它会告诉您您在远程之前进行了一些提交。
git status
的示例输出:
On branch develop
Your branch is behind 'origin/develop' by 19 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
如您所见,这在与同一分支机构中的更多人一起工作时非常有用,因为您始终可以了解他们在做什么并使您的工作保持最新。
直到最近,我才知道 --track
切换到 git branch
。我阅读了文档并尝试了这个命令,但它对我来说毫无意义。
--track
When creating a new branch, set up
branch.<name>.remote
andbranch.<name>.merge
configuration entries to mark the start-point branch as "upstream" from the new branch. This configuration will tell git to show the relationship between the two branches ingit status
and gitbranch -v
. Furthermore, it directsgit pull
without arguments to pull from the upstream when the new branch is checked out.This behavior is the default when the start point is a remote-tracking branch. Set the branch.autoSetupMerge configuration variable to
false
if you wantgit checkout
andgit branch
to always behave as if --no-track were given. Set it toalways
if you want this behavior when the start-point is either a local or remote-tracking branch.
我可以看到人们在想要使分支跟踪上游分支时与此开关有关
这是什么意思?是我还是这个开关描述令人困惑。当我使用术语 upstream
时,我指的是另一个我可以将更改推送到的远程仓库(分支)。
当我开始跟踪远程分支时会发生什么?它在本地如何体现?
分支的上游分支,或tracked 远程分支只是您在使用[时默认与之交互的分支=16=] 和 git push
命令。
将分支拉入您的分支时,您可以明确地执行此操作:
git pull origin the_branch
它将获取远程 origin
然后将 origin/the_branch
合并到您当前的分支。
如果你过去总是拉同一个分支,通过设置一个上游分支,你可以只启动 git pull
:
git branch --set-upstream-to origin/the_branch
git pull
默认情况下,当您从远程分支开始一个新分支时,git 会将其添加为上游分支:
git checkout -b origin/the_branch
# Is equivalent to
git branch --track the_branch origin/the_branch
git checkout the_branch
推的时候几乎一样。
配置 push.default
将确定在使用 git push
时不带参数时要推送到的默认分支。
值为upstream
,直接推入上游分支
使用默认值 simple
,它将执行相同的操作 但前提是本地和上游分支名称相同 .
我让您查看文档以检查其他配置可能性。
您可以使用 -vv
开关查看所有分支的当前上游分支:
$ git branch -vv
* my_branch 33f2d4c [origin/mybranch] a useful commit
master 3ed8e99 [origin/master] Merge
the_branch dbbb8c0 [origin/the_branch] commit on the branch
分支的上游分支也可以用@{upstream}
引用引用:
$ git rev-parse --symbolic-full-name --abbrev-ref @{upstream}
origin/the_branch
推送分支相当于 @{push}
(在 99% 的用例中它将与 @{upstream}
相同):
$ git rev-parse --symbolic-full-name --abbrev-ref @{push}
origin/the_branch
@{upstream}
和 @{push}
之间的区别是针对使用三角工作流的情况:您从只读 "upstream" 项目(通常是约定俗成的远程调用)中拉取upstream
) 并推送到可写存储库。
GitHub.
上使用的分叉工作流程就是这种情况
我为此做了一个(法语)博客 post,here is the auto-translated version。
当您想将本地所做的事情与远程发生的事情联系起来时,您可以设置本地分支来跟踪远程分支。
也就是说,git 会在您执行 git pull
或 git fetch
时知道在哪里查找更改。如果其他人将一些提交推送到远程分支,而你执行 git status
它会告诉你你是远程分支后面的一些提交。或者,如果您在本地进行了一些提交,它会告诉您您在远程之前进行了一些提交。
git status
的示例输出:
On branch develop
Your branch is behind 'origin/develop' by 19 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
如您所见,这在与同一分支机构中的更多人一起工作时非常有用,因为您始终可以了解他们在做什么并使您的工作保持最新。