如何干净地将远程git分支/复制到本地存储库

时间:2012-07-06 05:41:35

标签: git

我希望远程分支的“复制”“复制”到特定的本地分支。

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

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

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

3 个答案:

答案 0 :(得分:95)

如果你不关心合并:

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

这将完全按照你的意愿行事:没有合并,没有变基,只需将本地分支置于与遥控器完全相同的状态。

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

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

如果您已经拥有本地分支(例如,在其中进行了一些更改),则可以使用git reset --hard,放弃所做的任何修改,而是采用远程的确切版本分支。

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

答案 1 :(得分:3)

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

git fetch origin remote_branch_name:local_branch_name

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

编辑: 还有一个更现代的替代解决方案:

git switch remote_branch_name

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

答案 2 :(得分:0)

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

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

为例

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

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

我跑了

git checkout -b picklerick remotes/origin/picklerick

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