在两个远程存储库上使用 GIT

Working with GIT on two remote repositories

我们为一家公司提供开发服务,他们也从另一家公司获得服务,他们不希望他们知道我们。

他们正在使用我拥有完全访问权限的 git 存储库(但我必须避免向其写入任何内容),而且我们还有另一个存储库用于我们自己的开发。

我想每周用他们的代码更新一次我们的 master 分支,同时我想继续将我们的开发推向另一个分支。待其他公司开发完成后,我打算将我们的开发合并到我们的 master 分支以准备发布。

还能保留其他公司的发展历史就好了!

我正在使用 SourceTree 作为 GIT 界面,任何有关它的说明也很棒!

我应该遵循什么样的流程?

您的本地仓库可以指向多个远程仓库。 指向远程仓库的对象称为 "remote"。 通常,您从中克隆的远程仓库将在您的本地仓库中命名为 origin。 您可以创建一个具有不同名称的遥控器(例如,客户来源)。 然后,您可以从 customer-origin 克隆,创建一个要处理的本地分支,并将该分支推送到您公司的存储库(可能称为 origin)。 然后,当你想从客户那里更新时,切换回你从他们那里克隆的分支,并从名为 customer-origin 的远程拉取。 然后你可以将它合并到你的开发分支。 在 sourcetree 中我读到 settings->add 是添加新遥控器的地方,但我不是使用 source tree 的专家。

首先,您可以将其他公司代表添加为新的远程

git remote add companyName https://github.com/user/repo.git

对于每周更新:

  1. git pull companyName master
  2. 在 SourceThree 中,您可以在此处放置一个标签来控制更新:)
  3. git push origin master

如果只有这样换master,就不会产生冲突了。我想修补程序将出现在 companyName master.


发布合并:

只需正常合并即可,使用:git merge dev 并解决冲突。


希望对你有帮助ps

编辑:

ps: 你也可以在开发和发布中使用'git flow'...它会防止一些问题xD

由于你需要从其他公司的分支合并到你的master分支,所以这是一个不相关的历史合并。但是 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 otherreopgit merge otherrepo/master --allow-unrelated-histories

全部完成后,可以使用git checkout mastergit merge develop将develop分支合并到master分支。