带有“两级远程”的Git

带有“两级远程”的Git,git,github,Git,Github,我有一个在GitHub上托管的项目,我想在本地工作。我有多台计算机需要访问它,我想在它们之间共享代码。然而,我不希望所有这些提交都在GitHub上进行,所以简单的克隆然后只是推/拉方法并不合适 基本上,我希望: [GitHub] --> [A Local Network Share] --> [PC1] --> [PC2] 因此,PC1和PC2应该能够推/拉到本地网络共享,从而在彼此之间共享代码,我希望

我有一个在GitHub上托管的项目,我想在本地工作。我有多台计算机需要访问它,我想在它们之间共享代码。然而,我不希望所有这些提交都在GitHub上进行,所以简单的克隆然后只是推/拉方法并不合适

基本上,我希望:

[GitHub] --> [A Local Network Share] --> [PC1]
                                     --> [PC2]
因此,PC1和PC2应该能够推/拉到本地网络共享,从而在彼此之间共享代码,我希望每隔一段时间将这些更改推送到GitHub存储库

我在这里有点迷路了-我只是创建一个分支吗?或者我从GitHub将git克隆到我的共享,然后从我的共享将git克隆到PC1和PC2,这将导致他们只有一个远程共享,而共享只有一个远程GitHub

编辑:这不是为了安全——我不介意所有的即时提交都转到GitHub,我也不想阻止PC2访问GitHub。更重要的是,我不想设置整个SSL内容,因为我是一个非常经常每隔几分钟提交的人——我使用git commit作为一个扩展的撤销功能,我希望GitHub上的代码始终是可编译的

编辑2:这里的解决方案对我还不起作用:我也这么做了

git clone --bare git@github.com:foo/bar
在我的服务器上。这将创建一个克隆。在我的电脑上,我用git克隆了这个存储库——这一步很好,我的电脑有一个.git存储库,我的服务器设置为远程

然而,在服务器上,没有任何设置是正确的-没有添加遥控器,我不能从那里推。使用git-add添加远程设备很容易,但是如何推送呢?git status说它需要一个工作目录,而我们没有这个目录-bare,git push说所有内容都是最新的,即使不是我在PC1上做了一个更改,git被推到了服务器上

在服务器上创建不带-bare的存储库意味着它有自己的工作目录,所以当我从PC上推git时,服务器不会接收到它,我猜我需要从PC上拉git,但我想避免这种情况


我在这里遗漏了一个步骤吗?

第二个解决方案应该足够了

创建fork意味着您的中间阶段仍然是GitHub,而GitHub是GitHub上的git克隆 创建分支并不能解决共享代码方面的任何问题 如果你制作了一个git克隆——在你的共享上裸露myGitHubRepo.git,然后在PC1和PC2上克隆该sharedRepo,那么你已经为每个PC repo设置了一个自然的推/拉目的地

由mstum编辑:此方法有效且正确,但缺少一个步骤。服务器上的裸克隆没有任何远程设置。这需要通过以下两种方式来完成:

git remote add origin git@github.com:user/Project.git
或者,从服务器到gitHub的每次推送都需要

git push git@github.com:user/Project.git

第二种解决方案应该足够了

创建fork意味着您的中间阶段仍然是GitHub,而GitHub是GitHub上的git克隆 创建分支并不能解决共享代码方面的任何问题 如果你制作了一个git克隆——在你的共享上裸露myGitHubRepo.git,然后在PC1和PC2上克隆该sharedRepo,那么你已经为每个PC repo设置了一个自然的推/拉目的地

由mstum编辑:此方法有效且正确,但缺少一个步骤。服务器上的裸克隆没有任何远程设置。这需要通过以下两种方式来完成:

git remote add origin git@github.com:user/Project.git
或者,从服务器到gitHub的每次推送都需要

git push git@github.com:user/Project.git

这是为了安全,所以PC2没有权限推送到github吗?为此,我通常设置多个http://www.kernel.org/pub/software/scm/git/docs/git-remote.html“>git远离我的开发机器。没有主远程设备推式访问权限的开发人员可以推/拉到单独的远程设备。然后,您可以将它们的更改下拉到另一个本地分支,并将它们合并到您认为合适的地方。

这是为了安全起见,这样PC2就没有权限推送到github了吗?为此,我通常设置多个http://www.kernel.org/pub/software/scm/git/docs/git-remote.html“>git远离我的开发机器。没有主远程设备推式访问权限的开发人员可以推/拉到单独的远程设备。然后,您可以将它们的更改下拉到另一个本地分支,并将它们合并到您认为合适的分支中。

这是完全可以实现的。首先制作github repo的裸克隆:

git clone --bare git@github:foo \\network\foo
存储库不包含工作副本,这是到,以便您可以在本地克隆它并推送到它

然后在每台电脑上克隆网络位置:

git clone \\network\foo foo

然后处理每个存储库,进行分支、提交等,并将它们推送到共享。当您准备好推送到github时,请切换到\\network\foo并从那里开始推送。

这是完全可以实现的。首先制作github repo的裸克隆:

git clone --bare git@github:foo \\network\foo
存储库不包含工作副本,这是到,以便您可以在本地克隆它并推送到它

然后在每台电脑上克隆网络位置:

git clone \\network\foo foo
然后处理每个存储库,进行分支、提交等,并将它们推送到共享。当你 准备好推送到github,切换到\\network\foo并从那里推送