【问题标题】:Git with a "two-stage remote"带有“两阶段遥控器”的 Git
【发布时间】:2011-01-02 06:33:47
【问题描述】:

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

基本上,我想要这个:

[GitHub] --> [A Local Network Share] --> [PC1]
                                     --> [PC2]

所以 PC1 和 PC2 应该能够推/拉到本地网络共享,从而在彼此之间共享代码,并且每隔一段时间我想将这些更改推送到我的 GitHub 存储库。

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

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

编辑 2:这里的解决方案还没有为我工作:(所以我这样做了

git clone --bare git@github.com:foo/bar

在我的服务器上。这将创建一个克隆。在我的 PC 上,我 git clone 这个存储库 - 这一步工作正常,我的 PC 有一个 .git 存储库,并且我的服务器设置为远程。

但是,在服务器上,没有正确设置任何东西 - 没有添加遥控器,我无法从那里推送。使用 git add 添加遥控器很容易,但是我该如何推送呢? git status 说它需要一个工作目录(我们没有 --bare),并且 git push 说“一切都是最新的”,即使它不是(我在 PC1 上进行了更改并将 git 推送到服务器)

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

我在这里错过了一步吗?

【问题讨论】:

    标签: git github


    【解决方案1】:

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

    • 创建分叉意味着您的中间阶段仍将是 GitHub(a forkgit clone GitHub 上)
    • 创建一个分支并不能解决共享代码方面的任何问题

    如果您在共享上创建git clone --bare myGitHubRepo.git,然后在 PC1 和 PC2 上克隆该 sharedRepo,则您已为这些 PC 存储库中的每一个设置了一个自然目标,供它们推送/拉取。

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

    git remote add origin git@github.com:user/Project.git
    

    或者从服务器到 gitHub 的每次推送都需要

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

    【讨论】:

      【解决方案2】:

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

      git clone --bare git@github:foo \\network\foo
      

      存储库是裸露的(不包含工作副本,这是为了让您可以在本地克隆它并推送到它)。

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

      git clone \\network\foo foo
      

      然后您在每个存储库上工作并创建分支、提交等并将它们推送到共享。当您准备好推送到 github 时,更改为 \\network\foo 并从那里推送。

      【讨论】:

        【解决方案3】:

        这是为了安全,让 PC2 无权推送到 github 吗?为此,我通常从我的开发机器上设置多个 http://www.kernel.org/pub/software/scm/git/docs/git-remote.html'>git 遥控器。对主遥控器没有推送访问权限的开发人员可以推送/拉到单独的遥控器。然后,您可以将他们的更改下拉到不同的本地分支,并根据需要合并它们。

        【讨论】:

          猜你喜欢
          • 2014-10-28
          • 2010-12-07
          • 2015-01-18
          • 2018-06-25
          • 1970-01-01
          • 2012-08-01
          • 1970-01-01
          • 2016-11-08
          • 1970-01-01
          相关资源
          最近更新 更多