在私有git服务器上分支公共git存储库

时间:2015-05-09 21:58:18

标签: git git-branch

我在本地Fedora机器上有自己的git服务器。我有两台开发机器,一台本地Fedora机器和一台本地Windows 7机器。 (开发机器和git服务器都在本地网络上,所以我用这种方式比使用github更快。)

我使用的是BSD许可库的github存储库。我想进行自己的更改,我可以推送到我自己的git服务器,可以选择提交SOME而不是所有补丁或推送到github。

我希望能够让我的本地存储库能够从github存储库中提取更改。 (我知道如果github存储库在我进行本地更改的地方发生变化,我可能必须进行手动合并。)

我该怎么做?

我定期从github存储库更新,将该目录添加到我的本地git服务器作为新的存储库,重新进行任何更改,并推送到我的本地git服务器。

必须有更好的方法。

1 个答案:

答案 0 :(得分:3)

Git是分布式的,因此您描述的工作流程本质上就是Git的工作方式。

我们首先考虑您不想提交更改。然后你可以git clone远程服务器,git remote add你的私人服务器并推送到它。当上游有你想要的新东西时,git pull来自它,当你有新的东西时git push到你的私人服务器。在此工作流程中,私有服务器上的提交和公共服务器上的提交是相同的(特别是相同的sha1),但是您的私有服务器有一些公共服务器没有的提交。

在第一个git clone和另一个git remote add上使用git clone,反之亦然。 git pull配置默认上游(以便无争议git pushgit clone与该遥控器同步),因此最简单的是来自您最常使用的遥控器的git push --set-upstream。但您可以稍后更改默认上游(例如for-github)。

建议阅读:Working with remotes

现在,如果你想向上游提交更改,那么难的是你不能只将分支推送到github。实际上,您可能需要在要保持私有的某些更改之前提交一些更改,因此提交必须涉及某种合并,并可能解决冲突。您可以通过创建类似git cherry-pick的分支(从公共历史记录中分支)和"您想要为此分支添加的更改来执行此操作。然后,将此分支推送到github。可能更好:对于你想要在上游贡献的每个功能,为这个功能创建一个分支,挑选相关的提交,推送并在github上发出一个pull-request。

建议阅读:git cherry-pick