我一直在与我的团队讨论并在互联网上搜索,但我无法弄清楚如何基于 GitHub 上托管的远程分支在本地创建新的 git 分支。似乎应该有办法做到这一点。
我已经尝试了以下操作,但是当我推送时,它会推送到错误的 (origin/release/1.0) 分支,而不是推送到 GitHub 上的新分支 (feature/123)。
git checkout -b feature/123 origin/release/1.0
Run Code Online (Sandbox Code Playgroud)
目前,有效的工作流程是:
git checkout release/1.0
git pull
git checkout -b feature/123
Run Code Online (Sandbox Code Playgroud)
不过,我必须做很多这样的事情,感觉我应该能够跳过在本地拉入 release/1.0 分支的过程,而是用一个命令创建我的分支。
有没有办法做到这一点,或者我们是否必须继续拉取最新版本,然后从本地分支?
更新全局 git 配置
git config --global branch.autoSetupMerge false
Run Code Online (Sandbox Code Playgroud)
从最新版本创建新分支
$ git fetch --all
$ git checkout -b feature/123 origin/release/1.0
$ git push --set-upstream origin feature/123
Run Code Online (Sandbox Code Playgroud)
当您从远程分支分支时,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'
Run Code Online (Sandbox Code Playgroud)
您不希望它跟踪遥控器。您可以使用 将其关闭--no-track。
$ git checkout --no-track -b feature/123 origin/release/1.0
Run Code Online (Sandbox Code Playgroud)
您可以使用 全局更改行为branch.autoSetupMerge。
$ git config --global branch.autoSetupMerge false
Run Code Online (Sandbox Code Playgroud)
现在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
Run Code Online (Sandbox Code Playgroud)
这是 Git 的分散特性,它不假设您已连接到遥控器。尽管定期进行是安全的git fetch。
为了确保您的功能分支与最新更改保持同步,您必须定期从 release/1.0 更新您的分支。
git fetch origin
git rebase origin/release/1.0
Run Code Online (Sandbox Code Playgroud)
这就是与他人合作的本质。
| 归档时间: |
|
| 查看次数: |
4092 次 |
| 最近记录: |