1

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

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

4

3 回答 3

1

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

  1. 在服务器上使用 cron 或类似工具来自动提交更改
  2. 在同一份工作中,推送到您 PC 上的裸仓库

这假设您将保存裸 repo 的文件系统安装到您的服务器上,以允许您的服务器写入(git push)到它。如果你不这样做,你需要设置一个 git 服务器。这在 Unix (gitd) 上很简单,但在 Windows (cygwin + gitd + sshd) 上涉及更多。

或者...

  1. 在服务器上使用 cron 或类似的东西来自动提交更改(如上)
  2. 在您的 PC 上使用 cron 或类似的“git pull”更改从服务器到您的 PC(由您安排服务器“git commit”,以便在 PC “git pull”启动之前完成)

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

我建议不要进入git push非裸远程仓库...否则您的索引将与您的工作副本脱节,并可能导致混乱。

于 2013-02-11T14:57:41.780 回答
0

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

编辑

如果你有文件系统访问你的服务器,你可以git clone使用它的路径来你的 repo:

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

编辑 2

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

git config receive.denyCurrentBranch "ignore"
于 2013-02-11T10:01:53.053 回答
0

一般来说,git 开发人员不希望您推送到非裸仓库。这个想法是推送只将更改发送到.git文件夹,而不是将更改发送到工作目录。如果您要推送到非裸仓库,则工作树实际上将位于 HEAD 后面。

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

但我认为最好的解决方案,恕我直言,是保留一个裸仓库并与其他两个仓库一起推/拉/取它。

于 2013-02-13T16:50:03.043 回答