繁体   English   中英

Git:如何将远程分支的上游设置为另一个远程分支?

[英]Git: How set upstream of a remote branch to another remote branch?

我有两个远程分支:

feature/feature1 //upstreamed to master

而另一分支为子任务 - > subtask/subtask1feature/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 fetchgit mergegit rebasegit pushgit 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM