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


75

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

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

我不想将其与我的代码合并-我想完全覆盖我的代码,这样我就可以清楚地了解他在“实验”分支上所做的工作。

一个人如何“获取”(获取/拉取/以任何方式...)别人已经提交给远程存储库的远程分支到您自己的本地存储库,而不会尝试对您自己的本地代码执行合并?


对于这种情况,我想单独保存一份本地存储库副本。它不仅可以使您免于犯错,还可以让我并行工作。
user1164937 '16

Answers:


135

如果您不关心合并:

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


8
不要重置以放弃您的更改。做git stash代替。更安全。
亚当·迪米特鲁克

2
起初这没有用,但这是因为我不是从获取遥控器开始的。
capybaralet 2014年

我不明白这个答案。是否输入“ remote / <分支名称>”或“ <remote> / <分支名称>”替换“ origin”或其他名称?

@Robert <remote> / <branch_name>
eckes

我做了git checkout -b branchname origin / branchname,但是我得到警告:refname不明确
Alexander

2

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

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

使用示例

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

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

我跑了

git checkout -b picklerick remotes/origin/picklerick

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.