与master合作,我们的工作流程是
使用master分支的功能分支,上面的流程很容易在git中使用:
时间过去了,其他人改变了上游的reapo,所以得到这些更改并将它们合并到你的本地然后再回到你的分叉回购:
现在你的本地仓库和你的github上的分叉仓库都是从上游的原始仓库更新的,你可以做更多的工作。
问题是现在我们必须做同样的事情,但是使用开发分支,但上面的配方不起作用。
首先,如果我们这样做:
git fetch --all
这是否实际上从源和上游获取了开发分支?
我会假设它确实并继续。接下来我假设你会这样做:
git checkout develop
这是失败的(“开发与任何文件都不匹配”)没有明显的原因(如果你可以结账主,为什么不开发?为什么尝试匹配文件而不是分支)。接下来我们试试这个:
git checkout origin/develop
这会给恐惧分离的头部错误。我们已经阅读了很多关于此事here,但对于理解它的低级别git工作不够了解。我们只能假设这不是我们想要的并继续前进。谷歌搜索产生了几个推荐的解决方案:
git checkout -b develop origin/develop
git checkout --track origin/develop
git branch develop origin/develop
我不知道上述内容是否完全相同,或者我们应该尝试。
$ git branch -a
master
feature_branch1
remotes/origin/HEAD -> origin/master
remotes/origin/develop
remotes/origin/master
remotes/origin/feature_branch1
remotes/upstream/develop
remotes/upstream/master
这是相当奇怪的 - 克隆的本地仓库缺少开发分支,但原产地(它是从中克隆的)有它。似乎克隆没有克隆,但有选择地只复制一些分支。
让我们假设上述三个命令之一是正确的。
接下来我们需要
我们如何做到这一点?
=============更新===============
为了大家的荣幸,基于Narahari的优秀答案,这是完整的解决方案:
在本地仓库中创建开发分支(克隆不做)
从上游(原始仓库)更新开发分支
在功能分支上做一些工作:
将更改推送到您的分叉回购:
在github中创建一个git pull请求,指定上游开发分支为目标。
答案 0 :(得分:2)
你可以这样尝试,就像你对master分支一样:
git checkout -b develop origin/develop
- >创建一个名为" develop"的本地分支。来自你的分叉github回购
从开发分支创建一个功能分支,并合并到您的远程"开发"分支
随着其他人对上游/开发分支进行更改
git fetch --all
- >从您的仓库(上游和原点)的所有远程点获取
git checkout develop
- >转到您当地的开发分支
git merge upstream/develop
- >合并上游/开发到您当地的开发分支
git push origin develop
- >推动从本地开发到您的遥控器的最新变化" develop"分支
还要回答关于" git fetch --all
"的问题。命令,
git fetch origin
仅从原点获取数据,git fetch --all
从所有远程提取数据(origin
是其中之一)。因此它将从origin
和upstream
以及任何其他相关联的遥控器中拉出来。希望这有帮助