我有一个名为“ master”的非跟踪分支。

我在Github上有一个名为“ master”的远程分支。

建议创建一个用于跟踪远程分支的跟踪分支,因为它可以使您更轻松地执行推/取操作,因为这样可以避免您在自己的显式指定“ remote repo name”和“ local-branch-to-push”下一个推/取。

因此,有两种方法可以做到这一点:

第一种方式

“主”分支->“源/主”->“远程主分支”

这是使用“ git push -u”完成的

为什么需要显式推送新分支?

第二路

“主”分支可以直接跟踪“远程主分支”

使现有的Git分支跟踪远程分支?

一种方法比另一种更好,还是只是风格问题?

===============>>#1 票数:2 已采纳

从功能上讲,它们都导致同一件事。 当我尝试两种样式时,它们会导致相同的配置。

$ git push -u origin 1st:master
Counting objects: 3, done.
Writing objects: 100% (3/3), 261 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To /Users/schwern/tmp/test-repo
   71f7d8f..6729320  1st -> master
Branch 1st set up to track remote branch master from origin.

$ git branch -u origin/master
Branch 2nd set up to track remote branch master from origin.

$ cat .git/config
...
[remote "origin"]
    url = /Users/schwern/tmp/test-repo
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[branch "2nd"]
    remote = origin
    merge = refs/heads/master
[branch "1st"]
    remote = origin
    merge = refs/heads/master

远程分支没有“直接”跟踪。 Git远程分支是您存储库中的常规分支,碰巧是从远程存储库更新的。 “跟踪”告诉一个分支从另一个分支推拉。

git push将更改发送到远程。 git branch -u告诉分支要跟踪的内容。 git push -u基本上是git push加上git branch -u

从接口的角度来看, git branch -u remote/branch比较安全。 它更明确,更神奇。 举例来说,当我设置此示例时,我尝试了此方法...

$ git branch
* 1st
  2nd
  master
$ git push -u origin master
Branch master set up to track remote branch master from origin.
Everything up-to-date

1st领先于master和origin / master,应该推动更改,但事实并非如此。 我花了一段时间才意识到git push -u origin master是push master而不是1st。 哇,它没有推动当前分支! 这是因为master部分是指远程目标分支,而Git猜测本地源分支也是master, 而不是我当前的分支 这种行为将根据您拥有的Git版本以及配置方式而变化。

这就是为什么我做了更明确的git push -u remote local_source_branch:remote_destination_branch语法的原因。 git push -u origin 1st:master

通常,如果您直接从远程分支,则最新版本的Git应该会为您解决这一问题。 这由branch.autosetupmerge控制,默认为true

$ git co -b 3rd origin/master
Branch 3rd set up to track remote branch master from origin.
Switched to a new branch '3rd'

IMO是设置远程跟踪分支的最安全方法。

PS您可以在不需要新服务器的情况下使用遥控器。 远程不必是URL,它可以是目录。 它只是一个裸仓库(即没有签出的文件)。 git init --bare /path/to/somedir ,然后git clone /path/to/somedir

  ask by Qwerty translate from so

未解决问题?本站智能推荐:

1回复

从远程跟踪分支

对于一个应用程序,我需要知道从远程跟踪的分支。 我知道如何从远程创建不在本地的分支: 我知道如何获取本地分支的远程地址: 但是现在,我需要通过远程知道是否跟踪了一个分支,如果是,则跟踪哪个分支。 例如,如果我有一个名为test的分支,并且其远程为toto / hell
2回复

GIT:哪种方法更好,直接从分支机构推送或与master合并然后推送?

这些天,我正在学习GIT,从svn转到git。 任何人都可以帮我找出以下情况下的良好做法。 假设我正在研究两个问题。 我创建了2个分支来工作。 分支机构:issue1和issue2 方法1 我可以直接将最新代码拉到我的分支issue1或通过命令推送到原始主机 目前在
1回复

Git:有没有简短的方法来设置一个新的分支来跟踪远程分支?

通常的命令是: Git响应: 这可以。 我的问题很简单。 大多数情况下,本地创建的分支与远程分支具有相同的名称。 是否有一个git命令执行此操作,所以我不需要两次键入分支名称? 换句话说,是否有类似的东西: git checkout --autocreate
1回复

远程跟踪分支和远程分支之间有什么区别?

似乎我可以从远程存储库中拉出或推送到一个分支,从/到我正在处理的分支。 如果是这样,那么远程跟踪分支的目的是什么? 它只是为了检查分支并看到它的样子吗? 看起来远程跟踪分支就像是远程分支的镜像。 仅供参考:我对git很新,但已阅读并重新阅读了许多教程,但我仍然不清楚这一点!
2回复

git上游并跟踪远程分支

我有点想知道从git命名“上游”。 如果我创建本地分支 想把它推到某个地方 如果我查看哪个远程分支: 我看到没有任何设置。 如果我尝试: 我懂了 为什么我必须设置“上游”才能获得“下游”设置? 也许我不知道是否还有其他下游设置?
1回复

跟踪新添加的远程分支

我想分享一下有关Git和GitHub的问题。 我想跟踪使用git添加到远程中的那些新分支,所以我要做的是:git branch -r看到那些远程分支,但是不幸的是,在我的Git中出现的只是那些旧分支。 我什至可以从远程跟踪那些已删除的分支。 您对此有任何想法吗? 如果您将它分享给我,我将
1回复

跟踪多个远程分支

所以我们假设有三个开发人员:Alice,Bob和Cecil。 他们决定在没有中央回购的情况下使用Git。 他们都为彼此设置遥控器,以便: 爱丽丝有remotes/bob/master 爱丽丝有remotes/cecil/master 鲍勃有remotes/alice
36回复

删除不再位于远程的跟踪分支

是否有一种简单的方法可以删除所有不再具有远程等效项的跟踪分支? 例子: 分支机构(本地和远程) 掌握 起源/主人 起源/错误修复 原点/错误修复-b 原点/错误修复-C 在本地,我只有一个master分支。 现在,我需要处理bug-fix-a ,所以我将其检出,对其进行处理,
1回复

如何跟踪不是我的git的远程分支

假设有人做了一个名为fooBranch的远程分支 我浏览了其他帖子,发现 并能够看到 我可以使用查看 使用这篇文章我如何签出远程Git分支? 问题是,我希望能够跟踪分支并将更改推送到分支。 我浏览了许多不同的帖子以设置上游和跟踪功能,但是它们没有用。 这样
2回复

Git远程分支跟踪

什么是一体(或至少更简单)的方法来完成此任务? 基本上,我想创建一个分支,但是要对其进行跟踪,以便可以将更改作为备份推送到中央存储库。 我已经做了很多Google&SO搜索,但是我对设置远程分支并跟踪它们的常规描述感到困惑。