gpt4 book ai didi

git - 什么时候使用 git branch --track ( start "watching upstream"的意思)?

转载 作者:太空狗 更新时间:2023-10-29 13:09:55 24 4
gpt4 key购买 nike

直到最近,我才知道--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 时,我指的是我可以将更改推送到的另一个远程仓库(fork)。

当我开始跟踪远程分支时会发生什么?它在本地如何体现?

最佳答案

分支的上游分支,或tracked 远程分支就是您在使用git pull 时默认与之交互的分支和 git push 命令。

将一个分支 pull 入你的分支时,你可以明确地这样做:

git pull origin the_branch

它将获取远程 origin 然后将 origin/the_branch merge 到您当前的分支。

如果你过去总是 pull 同一个分支,通过设置一个上游分支,你可以只启动 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} 之间的区别是针对使用三角工作流的情况:您从只读的“上游” pull 项目(通常是按照约定 upstream 调用的远程)并推送到可写存储库。
GitHub 上使用的 fork 工作流就是这种情况。
我发表了一篇关于此的(法语)博客文章,here is the auto-translated version .

关于git - 什么时候使用 git branch --track ( start "watching upstream"的意思)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45164894/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com