[英]Git: How set upstream of a remote branch to another remote branch?
我有两个远程分支:
feature/feature1 //upstreamed to master
而另一分支为子任务 - > subtask/subtask1
的feature/feature1
我想将subtask/subtask1
feature/feature1
的上游设置为feature/feature1
由于有多个开发人员在从事同一功能的不同子任务,因此,其想法是将一个远程功能分支上游作为主控,并将子任务上游作为功能分支。
因此,一旦检查了子任务,它们应该合并到功能分支中,一旦所有子任务完成,该功能将合并到主任务。
它应如下所示:
master-
feature1-
subtask1
subtask2
有可能这样做吗?
要将分支subtask/subtask1
上游设置为跟踪远程feature/feature1
分支,可以使用以下命令:
git checkout subtask/subtask1
git branch --set-upstream-to=<remoteName>/feature/feature1
例如,如果远程名称是origin
,则可以使用:
git branch --set-upstream-to=origin/feature/feature1
设置跟踪分支后,可以使用命令git branch -vv
仔细检查本地分支与它们正在跟踪分支之间的关系。
这里存在一个术语问题:“远程分支”可能意味着存储在远程 (即, 另一个 Git存储库)中的命名分支 ,或者可能意味着本地存储的远程跟踪名称 。
前者的一个例子是master
,但不是您的 master
,而是他们的 master
。 要操作该名称,您必须登录到托管该Git存储库的计算机,或使用git push
。
后者的一个示例是origin/master
:这是您的名字,随您所愿,除了您的Git每次运行git fetch origin
时都会自动从其 master
更新此名称。 因此,您的origin/master
记得他们的master
。
像origin/master
这样的远程跟踪名称 不能有上游。 虽然此名称在您的存储库中,但它是从属他人的分支名称。 您无法签出远程跟踪名称-如果尝试尝试,您只会得到Git所谓的分离HEAD ,就好像您已通过其哈希ID签出了提交一样。 因此,没有理由在此类名称上设置上游,您也无法这样做。
像master
这样的分支名称 最多可以有一个上游设置。 上游设置确定当您运行git fetch
, git merge
, git rebase
, git push
或git pull
时,默认情况下将使用什么Git(这是git fetch
和第二个Git命令)。 设置上游的主要原因是,您可以在不使用附加参数的情况下运行这些命令,并使某些Git命令将告诉您分支名称与其上游之间的任何差异。
通常,您可以将(本地)分支名称的上游(例如master
设置为其origin
副本(例如origin/master
; 而且实际上git checkout
往往会自动执行此操作,因此您不必为每个分支设置上游-只需git checkout feature/feature1
,您的Git 就会从origin/feature/feature1
设置中创建 feature/feature1
您的feature/feature1
上游到您的origin/feature/feature1
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.