【问题标题】:Git: How to get all `remote` branches locally, pointing to their respective `commits` as on remote?Git:如何在本地获取所有“远程”分支,并像远程一样指向它们各自的“提交”?
【发布时间】:2018-03-19 20:09:54
【问题描述】:

我最近将一个 repo 从远程克隆到了一台新机器上。遥控器有 2 个分支 masterdev。克隆后本地只有远程的master分支,没有找到dev

在远程,dev 已与 master 合并,master 就像 dev 之前的 2 个提交。

如果我在本地创建一个同名dev 的新分支,dev 现在指向master 的提示(相同提交),而远程dev 就像master 后面的2 个提交。

如何在本地获取所有remote 分支,正确指向它们各自的commits,就像在远程一样。

此外,出于好奇,只是检查了.git 目录,并在.git 目录下的config 中找到了这一行。

有人能解释一下.git/config 中的fetch = +refs/heads/*:refs/remotes/origin/* 是什么意思吗?特别是冒号:分隔符的作用。

谢谢 dk

【问题讨论】:

标签: git git-remote git-refspec


【解决方案1】:

我认为你需要做的只是一个 git fetch:

git fetch origin

这将以远程跟踪分支的形式将所有远程分支引入本地存储库。这应该包括远程masterdev 分支。请注意,您的初始克隆应该已经引入了这些分支。但是,git fetch 将使用最新信息更新 dev,这是合理的做法。

如果你想创建一个本地的dev 分支来跟踪远程分支,你可以这样做:

git checkout dev

这将创建一个新的本地分支 dev 来跟踪远程分支。

【讨论】:

  • 即使没有git fetch origin,如果我运行git checkout dev,git 会告诉Switched to new branch dev. Branch dev set up to track remote branch dev from origin. 那么git fetch origin 的意义/优势是什么。谢谢
  • @dkjain 通常,您所做的克隆可能会也可能不会捕获所有远程分支。执行git fetch 保证您将在本地拥有dev
猜你喜欢
  • 2018-11-22
  • 2012-01-02
  • 1970-01-01
  • 2014-03-06
  • 2018-07-21
  • 1970-01-01
  • 2012-03-21
相关资源
最近更新 更多