【问题标题】: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 之上?

【问题讨论】:

    标签: git git-branch


    【解决方案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>
      

      这一系列命令会

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

      现在如果你想将这个新的本地分支发布到你的远程并设置上游 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
      猜你喜欢
      • 1970-01-01
      • 2015-03-30
      • 1970-01-01
      • 1970-01-01
      • 2013-12-13
      • 2013-04-30
      • 2016-02-18
      • 1970-01-01
      • 2022-11-05
      相关资源
      最近更新 更多