如何在同一台机器上安装2个git存储库并在它们之间推拉?

时间:2013-02-11 09:49:39

标签: git

我想设置2个存储库来推送它们,如果可能的话,不要使用裸存储库。

我有一个服务器,有一些设计师正在研究它。因为我不会向他们介绍git工具,因为它非常复杂,我让它们在服务器位置工作。然后我想在我的电脑上保留一个存储库,以防万一有人会删除文件夹,或者我不得不在工作时进行更改..(服务器就像我们网络中的共享磁盘..)

3 个答案:

答案 0 :(得分:1)

如果您只是使用PC作为备份,那么最简单的解决方案是:

  1. 在服务器上使用cron或类似功能自动提交更改
  2. 在同一个工作中,推送到PC上的回购
  3. 这假设您将把保存裸仓库的文件系统挂载到您的服务器上,以允许您的服务器写入(git push)它。如果你不这样做,你需要设置一个git服务器。这在Unix(gitd)上很简单,但在Windows上更为复杂(cygwin + gitd + sshd)。

    ...替代地

    1. 在服务器上使用cron或类似功能自动提交更改(如上所述)
    2. 在您的PC上使用cron或类似 从服务器到PC的“git pull”更改(由您决定服务器“git commit”,以便在PC“git pull”开始之前完成)
    3. 这假设您将在PC上安装服务器文件系统(您只需要读取权限)。

      我建议不要git push使用非裸露的远程仓库...否则您的索引会与您的工作副本失去一步,并可能导致混淆。

答案 1 :(得分:0)

您最好使用githubbitbucket来托管您的存储库。否则你将不得不在其中一台机器上运行git服务器 顺便说一下,git并不复杂,你可以减少教你的设计师使用它的麻烦,而不是清理它们可能带给你服务器的混乱。

修改

如果您具有对服务器的文件系统访问权限,则可以使用其路径git clone您的存储库:

git clone /path/to/repo local-repo
cd local-repo
git fetch /path/to/repo

编辑2

为此,您需要在接收回购中将receive.denyCurrentBranch设置为忽略

git config receive.denyCurrentBranch "ignore"

答案 2 :(得分:0)

一般来说,git devs不希望你推送到非裸机库。 我们的想法是,push只会将更改发送到.git文件夹而不是对工作目录的更改。如果你要推到一个非裸的回购,工作树实际上将在HEAD后面。

现在有可能,但它包含了更多的步骤,这里有关于推送到非裸回购的一些信息:http://sitaramc.github.com/concepts/bare.html

但我认为最好的解决方案,恕我直言,就是保留一个简单的回购,并用你的另外两个回购推送/拉取/取出它。