我有一个本地分支A
。我需要为它创建一个远程跟踪分支origin/A
。是否可以在不与远程通信的情况下创建它?
答案 0 :(得分:2)
是。具体而言,远程跟踪分支名称(如origin/A
)实际上是本地实体,git branch --set-upstream-to
或git checkout --track
使用这个本地实体没有联系另一个Git。
请注意,refs/remotes/
名称空间中的名称会自动创建或更新,有时会自动销毁,git fetch
和git push
。从名称为origin
的远程提取或推送时,git fetch
和git push
将根据以下内容更新相应的远程跟踪名称获取或推送结果。更准确地说,运行git fetch origin
将遵循remote.origin.fetch
refspec。默认的refspec是+refs/heads/*:refs/remotes/origin/*
。如果remote.origin.url
中存储的网址中的Git具有origin/A
,则会导致当时创建或更新refs/remotes/origin/A
。
如果您使用--prune
选项或设置选择修剪的任何选项 - 我有时会配置fetch.prune = true
- 例如 - 那么同样的git fetch origin
会删除如果refs/remotes/origin/A
的Git上不存在refs/heads/A
,则为您自己的origin
。
假设您不关心这些自动操作,只需要您自己的Git设置自己的Git为分支A
设置两部分字段以使其上游为origin/A
。该要求是您的本地存储库必须具有名为refs/remotes/origin/A
的引用。如果你还没有,那么命令:
git update-ref refs/remotes/origin/A <valid-commit-specifier>
会创建它,而不会在URL上联系Git(因此无论现在该Git上是否有refs/heads/A
)。但是,目前还不清楚您希望将其用作有效的提交说明符。理想值是refs/heads/A
在origin
下存储的网址上的Git所解决的任何内容,并且要发现这一点,您必须联系该Git。但是,任何有效的提交说明符都可以,如果你不介意git status
产生奇怪的前/后计数。