(我见过pull/push from multiple remote locations,但我的问题所涉及的内容略有不同,或者至少相差甚远,以至于我无法弄清楚。)
我正在尝试编写一个脚本,该脚本将在GitHub上创建一个(私有)存储库,但是我还希望在另一台服务器上拥有所有提交历史记录等,以备万一GitHub爆炸时被备份,并被GitHub接管太空外星人,否则将无法使用。这里的想法是,如果我们早上醒来并且不能再使用GitHub,我希望能够指向我的服务器并尽可能平稳地接管它。
我可以很轻松地在GitHub上创建新的(私有)存储库。我已经使用GitHub API弄清楚了这部分,并且看起来工作正常。 (我以为那是困难的部分,但这很容易。)
我了解有关添加此部分的信息:
git remote set-url origin --push --add <a remote>
git remote set-url origin --push --add <another remote>
问题在于,我似乎无法弄清楚如何在非GitHub服务器上设置存储库。
我在远程服务器上设置了用户帐户,并且可以使用ssh公钥加密ssh
对其进行设置。我可以在上面运行命令,甚至可以使用我的私人GitHub帐户从GitHub中提取信息。
但是,我无法弄清楚什么是正确的命令 来设置初始git存储库,以便它可以接受我要push
进行的更改。
我尝试在服务器上运行git clone
和git pull
和git init
,但是当我尝试push
进行其他更改时,它们都导致了错误。
我终于运行了git init --bare
,似乎运行得差不多,因为我执行push
时没有错误提示,但是回购中的所有“非git”文件实际上都没有存在于服务器上的文件夹中,只是git专用文件:
HEAD
branches/
config
description
hooks/
info/
objects/
refs/
因此,如果GitHub消失了,我的服务器上将不会有文件的副本,这似乎违背了我想要做的所有事情。
我一直在Google和stackoverflow.com上寻找解决方案,但我这里必定缺少一些基本知识。我只有git
的基本知识(俗话说,足以应付危险)。
感谢您的时间和精力。
编辑添加:感谢VonC在下面的回答,它阐明了我需要的是一个简单的回购协议,但具有他所描述的另一个功能,我可以访问该存储库中的文件。我认为这正是我所需要的,但对要求的了解不足。
答案 0 :(得分:1)
如果要查看文件(至少在主分支中),请向裸仓库添加一个post-receive
脚本,该脚本将(as I did here)将该裸仓库的内容检出到工作中树:
cd /path/to/working/tree
git --git-dir=/path/to/bare/repo/.git --work-tree/path/to/working/tree checkout -f
每次您推送到该裸仓库时,都将在其中看到文件。