从GitHub上的远程分支创建新的Git分支

6

我已经和我的团队讨论并搜索了互联网,但是我无法弄清如何基于托管在GitHub上的远程分支本地创建一个新的git分支。看起来应该有一种方法可以做到这一点。

我尝试了以下方法,但当我推送时,它将推送到错误的(origin/release/1.0)分支而不是推送到GitHub上的新分支(feature/123)。

git checkout -b feature/123 origin/release/1.0

目前,有效的工作流程是:

git checkout release/1.0
git pull
git checkout -b feature/123

我经常需要这样做,但感觉应该可以跳过在本地拉取release/1.0分支的步骤,直接用一个命令创建我的分支。

有没有方法能够实现这个功能,或者我们只能不断拉取最新的发布版然后在本地创建分支?

解决方案

更新全局Git配置。

git config --global branch.autoSetupMerge false

从最新的发布版本创建新分支。
$ git fetch --all
$ git checkout -b feature/123 origin/release/1.0
$ git push --set-upstream origin feature/123

当您创建分支时,是否会出现“分支'feature/123'已设置为跟踪来自'origin'的远程分支'release/1.0'的消息?”. - Schwern
$ git checkout -b test/123 origin/release/2021.1 已切换到新分支'test/123' 分支'test/123'已设置为跟踪远程分支'origin'的'release/2021.1'。 - Josh
1个回答

4
当你从远程分支进行分支时,Git会自动将其设置为“跟踪分支”。 这是推送和拉取时它将使用的远程分支。
$ git checkout -b feature/123 origin/release/1.0
Branch 'feature/123' set up to track remote branch 'release/1.0' from 'origin'.
Switched to a new branch 'feature/123'

您不希望它跟踪远程。您可以使用--no-track关闭它。

$ git checkout --no-track -b feature/123 origin/release/1.0

你可以使用 branch.autoSetupMerge 全局更改行为。

$ git config --global branch.autoSetupMerge false

现在的 feature/123 分支没有跟踪分支。当你运行 git push 时,它必须猜测将你的分支推送到哪里。这可以通过 push.default 进行配置。你可能想要使用默认的 simple

simple - 推送与远程相同名称的当前分支。


我经常需要这样做,感觉应该能够跳过本地拉取 release/1.0 分支,而是用一条命令创建我的分支。

请注意,您仍然需要执行 git fetch 命令以确保您拥有最新版本。

git fetch origin
git checkout -b feature/123 origin/release/1.0

这是Git的去中心化特性,它不假设您与远程连接。虽然定期执行“git fetch”是安全的。为确保功能分支与最新更改保持同步,您需要定期从release/1.0更新您的分支。
git fetch origin
git rebase origin/release/1.0

与他人合作的本质就是这样。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接