如果可能的话,我想设置 2 个存储库来在它们之间推送和拉取,而不是使用裸存储库。
我有一个服务器,上面有一些设计师在做这件事。由于我不会向他们介绍 git 工具,因为它相当复杂,所以我让他们在服务器位置工作。然后我也想在我的电脑上保留一个存储库,以防万一有人删除该文件夹或者我必须在不工作时进行更改..(服务器就像我们网络中的共享磁盘..)
如果可能的话,我想设置 2 个存储库来在它们之间推送和拉取,而不是使用裸存储库。
我有一个服务器,上面有一些设计师在做这件事。由于我不会向他们介绍 git 工具,因为它相当复杂,所以我让他们在服务器位置工作。然后我也想在我的电脑上保留一个存储库,以防万一有人删除该文件夹或者我必须在不工作时进行更改..(服务器就像我们网络中的共享磁盘..)
如果您只是将 PC 用作备份,那么最简单的解决方案是:
这假设您将保存裸 repo 的文件系统安装到您的服务器上,以允许您的服务器写入(git push)到它。如果你不这样做,你需要设置一个 git 服务器。这在 Unix (gitd) 上很简单,但在 Windows (cygwin + gitd + sshd) 上涉及更多。
或者...
这假设您将在您的 PC 上安装服务器文件系统(您只需要读取权限)。
我建议不要进入git push
非裸远程仓库...否则您的索引将与您的工作副本脱节,并可能导致混乱。
您最好使用github或bitbucket来托管您的存储库。否则,您将不得不在其中一台机器上运行 git server。
顺便说一句,git 并没有那么复杂,教你的设计师使用它比清理他们给你的服务器带来的混乱要少得多。
如果你有文件系统访问你的服务器,你可以git clone
使用它的路径来你的 repo:
git clone /path/to/repo local-repo
cd local-repo
git fetch /path/to/repo
为此,您需要在接收仓库中将receive.denyCurrentBranch
设置设置为忽略:
git config receive.denyCurrentBranch "ignore"
一般来说,git 开发人员不希望您推送到非裸仓库。这个想法是推送只将更改发送到.git
文件夹,而不是将更改发送到工作目录。如果您要推送到非裸仓库,则工作树实际上将位于 HEAD 后面。
现在有可能,但它涉及更多步骤,这里有一些关于推送到非裸仓库的信息:http: //sitaramc.github.com/concepts/bare.html
但我认为最好的解决方案,恕我直言,是保留一个裸仓库并与其他两个仓库一起推/拉/取它。