[英]How to cleanly get/copy a remote git branch to local repository
我想要将远程分支的精确“副本”“复制”到特定的本地分支。
例如,一名团队成员创建了一项实验性功能,他已将其签入远程存储库中名为experiment
的分支。 我希望能够在我的本地存储库上签出一个新分支,并将experiment
分支按原样“复制”到我新签出的分支。
我不想将它与我的代码合并——我想完全覆盖我的代码,这样我就可以清楚地看到他在“实验”分支上做了什么。
如何以一种不尝试对您自己的本地代码执行合并的方式“获取”(获取/拉取/无论...)其他人已提交给远程存储库的远程分支到您自己的本地存储库?
如果您不关心合并:
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>
。
我没有足够的代表发表评论,但我想为那些仍在苦苦挣扎的人添加一个例子。 在我的示例中,我使用 Github 作为我的远程服务器并将分支复制到我的 Linux 服务器环境/终端。
首先,你需要运行git fetch
来确保你是最新的。
使用的例子
git checkout -b <my_new_branch> <remote>/<branch_name>
有一个名为“pickrick”的远程分支
我跑了
git checkout -b picklerick remotes/origin/picklerick
我可能只使用remote/picklerick
作为我的远程路径,但这对我有用。
假设git remote
命令输出origin
作为结果,那么
git fetch origin remote_branch_name:local_branch_name
将创建一个本地分支,它是您需要的远程分支的精确副本。
编辑:还有一个更现代的替代解决方案:
git switch remote_branch_name
该命令将创建一个与指定的远程分支同名的本地分支。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.