与使用Github的人共享git repo分支的好方法是什么?



我们使用master进行开发。我们将稳定的主题分支合并到master。对于我们的客户端,我们的分支来自master。我们需要让一些外部合作者(通常是前端开发者)在客户端的分支上进行合作。但是它们绝对不能访问(读或写)其他分支或主(理想情况下甚至不能访问客户分支分叉之前的项目历史)。

我的想法是,我们可以创建一个新的repo,其中"revision 0"将是一个,其中客户端的分支分叉,并使用pull请求将更改拉到规范的repo。有什么办法吗?我的意思是创建一个空的回购,从对其他回购的具体修订开始。

我认为这应该是可能的——因为内容是一样的——哈希也是一样的。但是,简单地复制粘贴修订版本是行不通的,或者很容易出错,因为新创建的请求需要与规范库中的请求完全相同才能具有相同的哈希值。

请注意,我们使用Github作为我们的git托管,我们无意创建我们自己的git托管。

如果您想要隐藏客户端和主服务器之间的关系,那么您将需要每个客户端都有一个私有存储库。您将拥有一个内部存储库,其中包含您自己的开发,以及每个客户端的孤立分支。当您想要创建一个新的客户端分支时,您将执行

git checkout --orphan client_xx
git commit

那么你就会有一个孤立的分支,它包含了当时主分支的确切内容。要创建客户端存储库,您需要使用临时分支

执行一个小技巧
mkdir -p /path/to/client_xx
cd /path/to/client_xx
git init
git fetch /path/to/internal client_xx:tmp
git checkout tmp
git branch master
git checkout master
git branch -d tmp

现在客户端存储库的主分支将包含与内部存储库的客户端分支完全相同的sha1。您可以让客户端fork客户端存储库并向您发出pull请求。您可以通过拉入客户机分支将客户机存储库集成到您的内部存储库中。由于客户端分支是孤立的,您不能正确地将客户端分支合并到主分支中(反之亦然),但是您可以使用精挑细选来完成集成。

最新更新