【问题标题】:Working with GIT on two remote repositories在两个远程存储库上使用 GIT
【发布时间】:2017-04-29 00:26:53
【问题描述】:
我们为一家公司提供开发服务,他们也从另一家公司获得服务,他们不希望他们知道我们。
他们正在使用我拥有完全访问权限的 git 存储库(但我必须避免向其写入任何内容),而且我们还有另一个存储库用于我们自己的开发。
我想每周用他们的代码更新一次我们的主分支,同时我想继续将我们的开发推送到另一个分支。在其他公司的开发完成一段时间后,我计划将我们的开发合并到我们的主分支以准备发布。
同时保留其他公司的发展历史会很棒!
我使用 SourceTree 作为 GIT 接口,任何带有它的指令也很好!
我应该遵循什么样的流程?
【问题讨论】:
标签:
git
github
version-control
bitbucket
【解决方案1】:
您的本地仓库可以指向多个远程仓库。
指向远程仓库的对象称为“远程”。
通常,您从中克隆的远程存储库将在您的本地存储库中命名为 origin。
您可以创建一个具有不同名称的遥控器(例如 customer-origin)。
然后,您可以从客户来源克隆,创建一个本地分支来处理,并将该分支推送到您公司的存储库(可能称为来源)。
然后,当您想从客户那里更新时,切换回您从他们那里克隆的分支,并从名为 customer-origin 的远程拉取。
然后你可以将它合并到你的开发分支。
在 sourcetree 中,我读到 settings->add 是添加新遥控器的地方,但我不是使用源树的专家。
【解决方案2】:
首先,您可以将其他公司代表添加为新的遥控器
git remote add companyName https://github.com/user/repo.git
每周更新:
- git pull companyName master
- 在 SourceThree 中,您可以在此处放置一个标签来控制更新:)
- git push origin master
如果这是更改主控的唯一方法,则不会产生任何冲突。我想修补程序将出现在 companyName master 中。
发布合并:
只需正常合并它,使用:git merge dev 并解决冲突。
希望对你有帮助
编辑:
ps:你也可以在开发和发布中使用'git flow'...它会防止一些问题xD
【解决方案3】:
由于您需要从其他公司的分支合并到您的主分支,这是一个不相关的历史合并。但是 SourceTree 不支持 --allow-unrelated-histories 的合并,所以最好使用git command line。下面是git命令供大家参考:
git clone <URL for your own repo>
git remote add otherrepo <URL for the other company’s repo>
git pull otherrepo #pull otherrepo to your local repo
git merge otherrepo/master --allow-unrelated-histories #merge otherrepo’s master branch to your local master branch
其他公司的repo更新后,需要再次使用git pull otherreop和git merge otherrepo/master --allow-unrelated-histories。
全部完成后,可以使用git checkout master和git merge develop将develop分支合并到master分支。