如何在同一台机器中拥有2个git存储库,并在它们之间进行推拉



如果可能的话,我想设置两个存储库来在它们之间推拉,而不是使用裸存储库。

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

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

  1. 在服务器上使用cron或类似工具自动提交更改
  2. 在同一份工作中,在您的电脑上推送回购

这假设您将把持有裸repo的文件系统装载到服务器上,以允许服务器对其进行写入(git-push)。如果您不这样做,则需要设置一个git服务器。这在Unix(gitd)上很简单,但在Windows(cygwin+gitd+sshd)上更为复杂。

或者。。。

  1. 在服务器上使用cron或类似工具自动提交更改(如上所述)
  2. 在您的电脑上使用cron或类似的来"git pull"从服务器到您的电脑的更改(由您安排服务器"git commit",以便它在电脑"git pull"开始之前完成)

这假设您将在PC上装载服务器文件系统(您只需要读取访问权限)。

我建议不要将git push加入非裸机远程回购。。。否则,您的索引将与工作副本不同步,并可能导致混乱。

您最好使用github或bitbucket来托管您的存储库。否则,您将不得不在其中一台机器上运行git服务器
顺便说一句,git并没有那么复杂,教你的设计师使用它比清理他们给你的服务器带来的麻烦要少。

编辑

如果您可以访问服务器的文件系统,则可以使用路径git clone您的repo

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

编辑2

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

git config receive.denyCurrentBranch "ignore"

一般情况下,git开发人员不希望您推送到非裸回购。其思想是推送仅将更改发送到CCD_ 4文件夹,而不将更改发送至工作目录。如果你要推到非裸回购,工作树实际上会在HEAD后面。

现在这是可能的,但它需要更多的步骤,以下是一些关于推送非裸回购的信息:http://sitaramc.github.com/concepts/bare.html

但我认为最好的解决方案,IMHO,是保留一个裸回购,并与另外两个回购进行推送/拉取。

最新更新