当我将本地分支推送到服务器时,它不会显示为跟踪

Vin*_*cio 9 git

我有一个git repo.如果我创建一个本地分支,执行操作然后将分支推送到服务器,执行a git branch -vv不会将其显示为跟踪.

然而,如果我把新的回购品拉下来,它确实会出现 git branch -vv

我也试过以下没有成功.

git config --get branch.foobranch.remote

git config --get branch.foobranch.merge
Run Code Online (Sandbox Code Playgroud)

如果我继续使用该分支,从服务器进行多次推送和拉动,一切正常,所以我只能假设git知道分支正在以某种方式跟踪远程.我想知道如何访问这些信息.

Von*_*onC 6

但那不是那个跟踪信息开始吗?

不:当你在本地创建一个新的分支时,Git不会假设你要推送它的位置(到哪个远程仓库).

更具体地,一个简单的git push(不-u)将不设置本地配置branch.<name>.remotebranch.<name>.merge,当本地分支具有关联一个上游分支,其被设置.

您必须在第一次推送该分支时指定上游仓库.

这与git clone(手册页)不同:

将存储库克隆到新创建的目录中,为克隆存储库中的每个分支创建远程跟踪分支(可见使用git branch -r),并创建并检出从克隆存储库的当前活动分支分叉的初始分支.

由于存在(例如)远程跟踪分支origin/master,何时git clone结账master,所述master将自动与其上游分支相关联origin/master.
看到git checkout

如果<branch>找不到但是在一个<remote>具有匹配名称的远程(称为)中确实存在跟踪分支,则视为等效于

$ git checkout -b <branch> --track <remote>/<branch>
Run Code Online (Sandbox Code Playgroud)

这就是为什么你可以master在克隆之后直接推送,但是你不能在创建一个新的分支后直接推送(origin/newBranch你的本地仓库中没有远程跟踪分支)

该结账(自动跟踪现有的远程跟踪分支origin/<branch>)将设置本地配置branch.<name>.remotebranch.<name>.merge.