96

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

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

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

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

4

3 回答 3

162

如果您不关心合并:

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 <remote>在签出或重置之前使用。

于 2012-07-06T05:42:50.787 回答
8

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

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

使用示例

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

有一个名为“picklerick”的远程分支</p>

我跑了

git checkout -b picklerick remotes/origin/picklerick

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

于 2019-12-28T19:26:04.063 回答
7

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

git fetch origin remote_branch_name:local_branch_name

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

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

git switch remote_branch_name

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

于 2021-04-07T07:11:23.977 回答