如何将git远程分支引用带到本地

3

创建一个新的git分支:

git checkout -b test

并将其推送到远端:

git push origin -u test

现在列出所有的分支,我得到了:

  master
* test
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/test

现在我想在另一台机器上执行一个命令来获取远程分支引用。我该如何做?
我希望得到以下输出:
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/origin/test

这个命令不知道新分支的名称。

我已经尝试了git pullgit pull --allgit fetchgit fetch --all。还有别的命令吗?

编辑:我需要一个能告诉我的命令:

* [new branch]      test       -> origin/test

这是否可以在不先检出分支的情况下实现?我也不想删除我的仓库并重新克隆。


你想查看一个已经创建的分支,但是不知道它的名称吗? - CharlesB
不,我想获取/列出在我的远程“origin”上创建的所有分支。 - Gabriel Petrovay
相关链接:https://dev59.com/DX_aa4cB1Zd3GeqP0Tzs - Robert Harvey
3个回答

4

在另一台机器上,我想执行一个命令来获取远程分支的引用。

您可以初始化一个空仓库,添加一个源,并执行ls-remote命令(如在您其他问题的评论中所做的):

git init newRepo
cd newRepo
git remote add origin /url/remote/repo
git ls-remote origin

这使您可以查看远程存储库的分支,而无需在本地克隆/提取任何内容。
并且由于您在空存储库中,所以您可以决定要提取什么。


正如jthill评论中提到的那样git ls-remote部分不需要从git存储库运行。
例如,考虑以下情况:

cd / # to illustrate that you can be anywhere
git ls-remote git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git 'refs/heads/*'

如果您已经克隆了仓库,并且不介意下载增量,则可以通过设置refspec以获取所有分支来使用git fetch命令。
(如在您的其他问题“ git checkout new remote branch when cloning with depth 1 option ”中所示)

git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"

1
git ls-remote 可以在任何地方使用,您不需要初始化一个丢弃的仓库。( cd /; git ls-remote git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git 'refs/heads/*'; ) - jthill
@jthill 确实。我已经将您的评论包含在答案中,以增加其可见性。 - VonC

0

要列出本地存储库的远程分支,例如:

$ git branch --remote |grep origin

在您的情况下,要更新与另一个名为 origin 的远程库对应的远程引用,可以使用以下命令:
$ git fetch origin

如果在远程仓库上创建了一个名为origin/test的新分支,这将创建一个新的远程分支。然后,您可以将其变成本地分支并使用以下命令检出:

git checkout --track origin/test

这只是列出它们,但它不会更新本地引用。即git branch -a不会列出:remotes/origin/test - Gabriel Petrovay
我想要更新本地克隆中的引用,而不是列出远程分支。 - Gabriel Petrovay
@GabrielPetrovay 尝试使用 git checkout --track origin/test,这应该会起作用。 - suhailvs
我不知道名称为 test。我想获取所有远程分支引用。 - Gabriel Petrovay
1
我假设你知道源的名称。然后执行以下命令:git for-each-ref --shell --format="git checkout --track %(refname:short)" refs/remotes/origin(输出是可以提供给sh的命令)。 - torek
不行,这只显示我已知的远程分支(HEADmaster)。test没有出现。 - Gabriel Petrovay

0
如果您已经有一个 Git 存储库并且只想从远程跟踪一个新分支,可以使用以下命令:
git checkout --track origin/test

如果你想克隆一个特定的分支:

git clone -b test <remote location>

我不知道新分支的名称,我想更新所有引用。 - Gabriel Petrovay
@GabrielPetrovay 请尝试使用CharlesB的答案,即 git ls-remote --heads origin - suhailvs
1
为什么要对错误的东西进行踩?请指出来。我已经使用这些东西很久了,没有遇到任何问题。这就是我们信任某些事物的方式。 - suhailvs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接