如何从现有的远程分支创建本地分支?
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 <new_branch_name> --track <remote_name>/<remote_branch_name>
例子:
git checkout -b local-A --track origin/remote-A
我在上述答案的多个 cmet 中看到了它,但第一眼看到它就很好。
跟踪分支是与远程分支有直接关系的本地分支。如果您在跟踪分支上并键入 git pull,Git 会自动知道要从哪个服务器获取以及要合并到哪个分支。
【讨论】:
在一个命令中同时进行结帐和跟踪是有效的——这对我也有用。【参考方案3】:这应该可行:
git checkout --track origin/<REMOTE_BRANCH_NAE>
【讨论】:
如果您想为新分支指定特定名称:git checkout -b master-copy --track origin/master
,请将 master-copy
替换为您想要的任何名称。
或git checkout -t origin/<REMOTE_BRANCH_NAME>
这短短的一行命令真的很管用……!并且易于理解。【参考方案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 +<new_branch_name>
另外,如果您只需要进行远程更改并且远程已经存在于您的本地,那么您可以完成,而不是步骤 2 和 3,
git pull --rebase <remote_name> <remote_branch_name>
然后选择了
git mergetool
(需要单独配置)以防发生任何冲突,并按照 git 的控制台说明进行操作。
【讨论】:
我认为我添加的命令会对您有所帮助。还是我从你的陈述中误解了什么?我通常获取遥控器,从中创建一个分支,对其进行处理,将更改推送到我的原始遥控器,将 PR 提升到主仓库,一旦它被合并,我就会删除功能分支。这有助于我分离许多任务并保持树清洁。git checkout -b <new_branch_name> <remote_name>/<remote_branch_name>
是我试图找到的命令。而已。我删除了原来的声明,因为它似乎令人困惑。
您可以使用-t
创建同名的本地分支以节省一些输入 - git checkout -t <remote_server>/<remote_branch>
如果您不希望新分支跟踪远程分支,请在第 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以上是关于如何从现有的远程分支创建本地分支?的主要内容,如果未能解决你的问题,请参考以下文章