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

Sta*_*ley 59 git

我希望将一个"复制"的远程分支"复制"到特定的本地分支.

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

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

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

eck*_*kes 107

如果你不关心合并:

git reset --hard <remote>/<branch_name>
Run Code Online (Sandbox Code Playgroud)

这将完全符合您的要求:没有合并,没有变基,只需将本地分支置于与远程完全相同的状态.

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

git checkout -b <my_new_branch> <remote>/<branch_name>
Run Code Online (Sandbox Code Playgroud)

git reset --hard如果您已经有一个本地分支(例如,对其进行了一些更改),您将使用它,丢弃所做的任何修改,而是采用远程分支的确切版本.

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

  • 不要重置以丢弃您的更改.改为git stash.方式更安全. (7认同)
  • 这起初并不起作用,但那是因为我没有从获取遥控器开始. (2认同)

daG*_*aGo 17

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

git fetch origin remote_branch_name:local_branch_name
Run Code Online (Sandbox Code Playgroud)

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

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

git switch remote_branch_name
Run Code Online (Sandbox Code Playgroud)

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


小智 7

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

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

使用的例子

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

使用名为“picklerick”的远程分支

我跑了

git checkout -b picklerick remotes/origin/picklerick

I probably could have just used remote/picklerick for my remote path, but this worked for me.