如何从现有的远程分支创建本地分支?

Posted

技术标签:

【中文标题】如何从现有的远程分支创建本地分支?【英文标题】:How to create a local branch from an existing remote branch? 【发布时间】:2014-08-09 17:09:29 【问题描述】:

我想从现有的远程分支(比如说 remote-A)创建一个分支,然后将更改提交到存储库。

我已经使用以下命令从现有的 remote-A 创建本地分支

$git checkout remote-A

git branch
master
* remote-A

现在我使用以下命令从远程 A 创建了 local-B

git branch local-B
git checkout local-B

如何确保我在本地 B 上的更改位于远程 A 之上,以便当我将本地 B 推送到远程仓库时,更改位于远程 A 之上?

【问题讨论】:

【参考方案1】:

首先我们需要使用获取远程分支

git fetch origin <remote-branch>

然后只需创建一个新的本地分支来跟踪远程分支

git checkout -b <local-branch> origin/<remote-branch>

origin 替换为您的远程名称。

【讨论】:

【参考方案2】:

我想从一个具有不同名称的远程 git 分支创建一个新的本地跟踪分支。

所以我使用了这个命令:

git checkout -b &lt;new_branch_name&gt; --track &lt;remote_name&gt;/&lt;remote_branch_name&gt;

例子:

git checkout -b local-A --track origin/remote-A

我在上述答案的多个 cmet 中看到了它,但第一眼看到它就很好。

跟踪分支是与远程分支有直接关系的本地分支。如果您在跟踪分支上并键入 git pull,Git 会自动知道要从哪个服务器获取以及要合并到哪个分支。

【讨论】:

在一个命令中同时进行结帐和跟踪是有效的——这对我也有用。【参考方案3】:

这应该可行:

git checkout --track origin/&lt;REMOTE_BRANCH_NAE&gt;

【讨论】:

如果您想为新分支指定特定名称:git checkout -b master-copy --track origin/master,请将 master-copy 替换为您想要的任何名称。 git checkout -t origin/&lt;REMOTE_BRANCH_NAME&gt; 这短短的一行命令真的很管用……!并且易于理解。【参考方案4】:

老帖子,我还是想补充一下我的工作。

1. git remote add <remote_name> <repo_url>
2. git fetch <remote_name>
3. git checkout -b <new_branch_name> <remote_name>/<remote_branch_name>

这一系列命令会

    新建一个遥控器, 将其提取到您的本地,以便您的本地 git 了解其分支和所有内容, 从远程分支创建一个新分支并结帐到该分支。

现在如果你想将这个新的本地分支发布到你的远程并设置上游 url

git push origin +&lt;new_branch_name&gt;

另外,如果您只需要进行远程更改并且远程已经存在于您的本地,那么您可以完成,而不是步骤 2 和 3,

git pull --rebase <remote_name> <remote_branch_name>

然后选择了 git mergetool(需要单独配置)以防发生任何冲突,并按照 git 的控制台说明进行操作。

【讨论】:

我认为我添加的命令会对您有所帮助。还是我从你的陈述中误解了什么?我通常获取遥控器,从中创建一个分支,对其进行处理,将更改推送到我的原始遥控器,将 PR 提升到主仓库,一旦它被合并,我就会删除功能分支。这有助于我分离许多任务并保持树清洁。 git checkout -b &lt;new_branch_name&gt; &lt;remote_name&gt;/&lt;remote_branch_name&gt; 是我试图找到的命令。而已。我删除了原来的声明,因为它似乎令人困惑。 您可以使用-t创建同名的本地分支以节省一些输入 - git checkout -t &lt;remote_server&gt;/&lt;remote_branch&gt; 如果您不希望新分支跟踪远程分支,请在第 3 步使用 --no-track @xploreraj 你的答案正是我想要的,非常感谢。【参考方案5】:

您想在 remote-A 的基础上创建分支,对其进行更改,然后将它们推送到 remote-A?

git checkout -b remote-A
git pull origin remote-A
git checkout -b remote-B

在远程 B 上进行更改

 git commit -a -m 'describe changes on remote-B branch'

 git checkout remote-A  
 git merge remote-B  
 git push origin remote-A

【讨论】:

现在,git checkout feature/A 将设置一个新的分支跟踪远程origin/feature/A,除非feature/A 已经存在。您也可以使用git checkout -b feature/A --track origin/feature/A 显式执行此操作。【参考方案6】:

为确保您的更改位于最前面,您不得从远程拉取。你必须获取和变基。 il 将是这样的:

fetch->stash->rebase->stash pop->commit->push

【讨论】:

来自 git 文档:“git pull --rebase”是“git fetch”后跟“git rebase”的简写。见git-scm.com/docs/git-pull

以上是关于如何从现有的远程分支创建本地分支?的主要内容,如果未能解决你的问题,请参考以下文章

git本地分支推送到远程分支

git push.default 几种设置笔记

如何强制将我在本地拥有的所有内容合并到远程主机中?

通过 Git 远程跟踪分支的给定名称如何找到哪个本地分支跟踪它?

Git创建远程分支并提交代码到远程分支

Git 创建远程分支并提交代码到远程分支