【问题标题】:Github pull requests, when I'm using a private git server当我使用私有 git 服务器时,Github 拉取请求
【发布时间】:2015-05-11 04:16:06
【问题描述】:

我有一个私人 git 存储库。我将它设置为原点,添加了一个 github 存储库的远程,从 github 拉取,并推送到我的原点。

这样,我可以在主项目中进行不需要的更改,并在我的其他开发机器之间共享它们。

当我做出想要与主 github 项目共享的更改时,这是否意味着我必须拥有 3 个遥控器?

1 - 我的私人 git 存储库

2 - 原始 github 存储库

3 - 原始 github 存储库,分叉到我的 github 帐户中

(也就是说,假设我没有对原始 github 存储库的直接写入权限。)

或者,我可以以某种方式摆脱上面的#3 吗?我可以将拉取请求直接发送到原始 github 存储库,还是必须在那里托管一个?我可以以某种方式将 github 的服务器访问权限授予我的私有 git 服务器,并以这种方式发送拉取请求吗?

我想不出 git hook 是如何工作的。如果我摆脱了上面的存储库#3,我不能让我的私有 git 存储库有一个钩子来自动发送到原始 github 存储库,因为这甚至会发送我打算私有的更改......除非有某种方法可以有选择地调用钩子。

【问题讨论】:

  • 您是否正在尝试将一些提交推送到 github 存储库?我不使用github,但应该可以。在我的私人 git 服务器上,我有时必须 git config receivedenyCurrentBranch ignore 来接受传入的提交。
  • 对于你的钩子问题,这个链接有帮助吗? git-scm.com/book/en/v2/Customizing-Git-Git-Hooks

标签: git github


【解决方案1】:

答案取决于您对“私人”的定义。如果“私有”的意思是“只有你可以访问”,那么 #3 是必要的,它是唯一可以写入并且上游可以读取的地方。

如果“私人”是指“我是唯一的用户,但上游可以以只读方式访问”,那么您可以将代码推送到那里并请求上游开发人员拉取。 但是,你将无法使用 GitHub 的 pull-request 机制(实际上,Git 是去中心化的,但 GitHub 是一个相当集中的解决方案)。您可以向他们发送电子邮件请求拉取(可能使用git request-pull)。

您可以将#3 设置为您的私有存储库的自动镜像。只需在您的私有服务器上配置一个 post-receive 挂钩,只要在您要镜像的一个分支上收到推送,该挂钩就会推送到 GitHub。或者只是设置一个别名来运行类似git push private && git push github

【讨论】:

  • 没有想到可以忽略镜像的想法,除了提出拉取请求。我喜欢这个主意。但是,如果我想跳过这个想法,有没有办法可以打开我的服务器但将其锁定以符合您对“我是唯一的用户,但它可以只读方式访问 github”的定义? (并且对非 github 的人来说是只读的。)我是否会限制我的 git 服务器(或者可能是防火墙)以允许从具有 *.github.com 反向查找的 IP 进行访问?或者,如果我发起 git request pull 是否会为 github.com 提供一个“令牌”以供使用,但拒绝其他人?
  • git request-pull 只是给你一个格式良好的电子邮件,没有权限改变左右。我写的是“upstream”,而不是“github”:那将是您想要向其发送代码的开发人员的机器,而不是 github。
猜你喜欢
  • 2019-08-30
  • 1970-01-01
  • 2015-02-18
  • 2012-09-20
  • 1970-01-01
  • 2020-01-05
  • 2014-11-30
  • 2012-11-18
  • 2019-12-08
相关资源
最近更新 更多