如何创建一个'私人分叉',与原点保持同步,并推回?

时间:2012-12-26 08:54:46

标签: git github pull-request

我克隆了a github project,并且必须私下进行一些修改(例如输入付款信息)。 Github不允许我私下分叉回购,说我应该duplicate it instead

按照他们的指示对我不起作用(得到一些错误,在他们的支持下进行处理)。不过,我不了解流程 - 我需要能够完成所有这些:

  1. 在需要时从原始仓库获取更新。
  2. 至少保留一个存储库。
  3. 进行一些更改并将其推回原点。也许这需要一个额外的公共存储库。
  4. 我不确定如何将所有这些同步到一起的最佳做法是什么。对我有什么建议吗?

2 个答案:

答案 0 :(得分:1)

如果你不关心将你的提交推送到远程私人服务器上的“保存”,只需在只读版本上进行简单克隆(实际上是本地版本)。 / p>

否则,您可以使用Bitbucket推送您的私人内容:

$ git clone … # the original project
$ git remote add ghost git@bitbucket.org/your_own_repo.git
$ git fetch origin # fetch the original
$ git push ghost master # push the head master into your own repo

当您需要通过原始项目进行更新时:

$ git pull origin *the_branch*

将数据推送到:

$ git push ghost *the_branch*

像JB Nizet所说,我不明白这一点。为什么不提供正常的方式?

答案 1 :(得分:1)

如果您的私人修改更多是私有配置,那么:

  • 不要在git repo(任何git repo)中对这些值进行版本化:意外地将它们推到不应该的位置的风险太高。
  • 将它们存储在另一个参考中(允许您保存文件的任何云服务,甚至可能加密):此处不需要“私人分叉”。
  • 仅显示该配置文件的模板以及包含公共值的文件。
  • 使用内容过滤器驱动程序:
    • 检查您是否在合适的环境(例如您的计算机)中查看了Git仓库
    • 如果是这样,请访问您的其他参照,获取值并使用正确(私有)值生成最终配置文件。

smudge

有关具体示例,请参阅this answer