在GitHub和我的私人服务器上设置git repo的初始步骤是什么?

时间:2018-08-24 19:07:15

标签: git github

(我见过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 clonegit pullgit init,但是当我尝试push进行其他更改时,它们都导致了错误。

我终于运行了git init --bare,似乎运行得差不多,因为我执行push时没有错误提示,但是回购中的所有“非git”文件实际上都没有存在于服务器上的文件夹中,只是git专用文件:

HEAD
branches/
config
description
hooks/
info/
objects/
refs/

因此,如果GitHub消失了,我的服务器上将不会有文件的副本,这似乎违背了我想要做的所有事情。

我一直在Google和stackoverflow.com上寻找解决方案,但我这里必定缺少一些基本知识。我只有git的基本知识(俗话说,足以应付危险)。

感谢您的时间和精力。

编辑添加:感谢VonC在下面的回答,它阐明了我需要的一个简单的回购协议,但具有他所描述的另一个功能,我可以访问该存储库中的文件。我认为这正是我所需要的,但对要求的了解不足。

1 个答案:

答案 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

每次您推送到该裸仓库时,都将在其中看到文件。