如何在GIT中进行分叉但不允许将其推回到原始远程

时间:2015-11-30 06:24:48

标签: git collaboration

我有一个学生来帮助一个项目一个月。我希望他分叉存储库,然后在本地处理代码,在我审核并测试它们之前无法推送更改。这是如何通过GIT完成的?请注意我们正在运行Windows并且我一直在使用GIT Extensions GUI,所有内容都在LAN上(还没有GIThub等)。我们的服务器上还有一个--bare仓库。

我可以通过让他克隆裸仓库然后在他的本地仓库中删除远程仓库来使其工作。这是合理的事吗?他以后能否通过远程再次添加回购来合并他的代码吗?

3 个答案:

答案 0 :(得分:2)

是的,他会的。但是可以在"服务器"上编写一个钩子脚本。 git(例如pre-receive一个),如果满足某些条件,它将拒绝合并提交。这基本上就是所有git框架(GitLab,Stash,GitHub)所做的。

有关更多信息,请参阅http://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks

答案 1 :(得分:1)

我不是一个git guru,但FWIW在这里是我的想法......

归根结底,因为主要的repo驻留在局域网上并且正由客户端直接访问,所以我认为你不会找到实现任何类型的访问控制的解决方案,例如git服务器(例如github和bitbucket)会提供。

然而,一切都没有丢失。

为什么不让你的学生克隆主要的回购,创建一个新的分支并在新的分支中工作?他甚至可以将该分支推回到主回购,这使您能够更轻松地审查他的工作。如果其他人正在检查工作进入主分支,那么你的学生将能够轻松地获取该工作并将其合并到他的分支中,所以如果他打破任何东西,他会很快发现。最终,当您准备好审查并合并他的工作时,您可以让他将他的更改(即他的分支)推送到主回购中。然后,您可以将master合并到该分支中,检查一切是否正常,并且假设确实如此,您可以将其分支合并到master中。

只要他不将分支切换回主人,这一切都会正常工作。但是关于git的好处是即使他确实切换回master,并且提交更改,并将它们推送到主repo,你总是可以回滚它们。 : - )

答案 2 :(得分:1)

  

这是合理的事吗?他以后能否通过远程再次添加回购来合并他的代码吗?

这可以毫无问题地完成。

但更好的解决方案可能是只允许他对局域网上的裸存储库进行读访问。这样,他仍然可以获得最新的代码,并使用最新版本来适应它的开发。

或者甚至更好地拥有另一个可以编写的裸存储库,并在存储库中添加为远程存储库,这样就可以跟随它的开发并集成它的开发(你做缓冲区;-))