【问题标题】:How to cleanly get/copy a remote git branch to local repository如何干净地获取/复制远程git分支到本地存储库
【发布时间】:2012-07-06 13:45:54
【问题描述】:

我想要将远程分支“复制”到特定本地分支的精确“副本”。

例如,一个团队成员创建了一个实验性功能,他已将其签入到远程存储库上名为 experiment 的分支中。我希望能够在我的本地存储库上签出一个新分支,并将experiment 分支按原样“复制”到我新签出的分支。

我不想将它与我的代码合并 - 我想完全覆盖我的代码,以便我可以清楚地看到他在“实验”分支上所做的事情。

如何以一种不会尝试在您的本地存储库上执行合并的方式“获取”(获取/拉取/无论如何...)其他人已提交到远程存储库的远程分支到您自己的本地存储库自己的本地代码?

【问题讨论】:

  • 我喜欢为这种情况保留一份我的本地 repo 的单独副本。它不仅可以帮助您避免错误,还可以让我并行工作。

标签: git


【解决方案1】:

如果你不关心合并:

git reset --hard <remote>/<branch_name>

这将完全满足您的要求:不合并,不重新设置基准,只需将本地分支置于与远程分支完全相同的状态。

但是,在您的情况下,您不需要它。您想创建一个与远程具有相同状态的本地分支,因此在创建本地时使用git checkout指定远程分支:

git checkout -b <my_new_branch> <remote>/<branch_name>

如果您想在本地使用相同的名称,可以将其缩短为:

git checkout <branch_name>

如果您已经有一个本地分支(例如,其中有一些更改),您将使用git reset --hard,放弃所做的任何修改,取而代之的是使用远程分支的确切版本。

为确保您拥有远程分支的最新状态,请在签出或重置之前使用git fetch &lt;remote&gt;

【讨论】:

  • 不要重置以丢弃您的更改。改用 git stash 。更安全。
  • 一开始这行不通,但那是因为我没有从获取遥控器开始。
  • 我不明白这个答案。您输入“remote/”还是“/”用“origin”或其他内容代替
  • @Robert /
  • 我做了 git checkout -b branchname origin/branchname,但我收到警告:refname is ambiguous
【解决方案2】:

我没有足够的代表发表评论,但我想为那些仍在苦苦挣扎的人添加一个例子。在我的示例中,我使用 Github 作为远程并将分支复制到我的 Linux 服务器环境/终端。

首先,您需要运行 git fetch 以确保您是最新的。

为例

git checkout -b &lt;my_new_branch&gt; &lt;remote&gt;/&lt;branch_name&gt;

有一个名为“picklerick”的远程分支

我跑了

git checkout -b picklerick remotes/origin/picklerick

我可能只使用remote/picklerick 作为我的远程路径,但这对我有用。

【讨论】:

    【解决方案3】:

    假设git remote命令输出origin作为结果,那么

    git fetch origin remote_branch_name:local_branch_name
    

    将创建一个本地分支,它是您需要的远程分支的精确副本。

    编辑: 还有另一种更现代的解决方案:

    git switch remote_branch_name
    

    该命令将创建一个与指定远程分支同名的本地分支。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-09
      • 2022-11-09
      • 2012-01-02
      • 2012-01-05
      • 1970-01-01
      相关资源
      最近更新 更多