我可以在家庭服务器上设置git存储库吗? (如果是这样的话?)

时间:2014-12-24 01:50:21

标签: git

我对git的理解是基本的,但是我理解一个项目可以从一个系统“推送”到一个远程系统,从那里可以克隆或将其他人拉到其他计算机。

例如,据我所知,github.com是一个可以推送项目或可以托管项目的域名。

我的问题是,我可以在家庭服务器上设置类似github的存储库,然后我可以将我的工作备份推送到,假设我知道相关信息,例如服务器IP等等。

如果这个问题的答案是“是”,那么问题2就是“如何?”。

编辑:我想我可能真的想要使用SVN系统而不是Git系统吗?

3 个答案:

答案 0 :(得分:3)

如果您可以通过SSH连接到家庭服务器,那就像创建一个文件夹一样简单(包含一些内容)!

[user@remote ~]$ mkdir my-project
[user@remote ~/my-project]$ cd my-project/
[user@remote ~/my-project]$ git init --bare

[me@local ~/my-project]$ git remote add home-server ssh://user@remote/my-project

这会创建一个裸的远程存储库,它与本地的.git文件夹基本相同。

答案 1 :(得分:0)

问题1:是的,你可以,git是一个分布式版本控制系统。

问题2:O.S.你在服务器上运行了吗?视窗? Linux呢?如果您有Linux,那么您可以(并且应该)考虑在您的服务器上使用SSH,根据您的发行版,您将找到几个如何在Web上设置SSH服务器的教程,这是我用自己的ubuntu < / p>

https://help.ubuntu.com/10.04/serverguide/openssh-server.html

如果您有窗户,可以测试一下:

http://www.redeszone.net/windows/freesshd-para-windows-instalacion-y-manual-de-configuracion-de-freesshd-para-windows-servidor-ssh-y-sftp/

如果您无法翻译页面(最后一页是西班牙语),您可以在Windows上阅读有关SSH服务器的讨论:

https://serverfault.com/questions/8411/what-is-a-good-ssh-server-to-use-on-windows

我没有在Windows上使用SSH服务器的个人经验,但我确实使用Putty作为客户端。

因此,为了(安全地)访问您的远程git存储库,您必须通过SSH访问。

修改

好吧,每个人都建议你使用SSH,但你不知道为什么,我会尝试解释我所知道的或我认为我知道的。

Git不像SVN,你没有和程序/进程作为服务器运行,你没有连接“Git服务器”来推动。

想象一下,你在本地计算机上有2个用Git版本化的项目副本,让我们命名那些副本A和B,你可以在A或B上配置“遥控器”以推送到其中一个,但这是由一个程序(Git),当你运行命令推送时,Git应该可以访问BOTH存储库,然后他进行所需的所有检查并将数据保存在适当的存储库中。

当你在远程服务器上有一个存储库时,你仍然可以使用git进行推送,但你需要给Git一种访问远程存储库的方法(因为它是本地的),你可以使用像ftp这样的协议,这是SSH开始运行的时候,你可以使用SSH和/或SFTP(一种通过安全连接访问你的存储库的方式)。

您还可以设置VPN并通过网络共享容器文件夹(项目)并将该文件夹挂载为本地文件夹(如果您是唯一访问文件的人,如果您正在与团队合作,那么您应该使用SSH(scp / sftp))。

但到目前为止最好的方法是使用SSH,你应该尝试一下。

答案 2 :(得分:0)

为了理解Git工作流程,我在机器上也尝试了同样的事情。我个人更喜欢使用git代码托管网站。我是这样做的,

$ sudo apt-get install openssh-server openssh-client

出于安全考虑,请为git创建一个新用户帐户,

$ sudo adduser git
$ su git
$ cd
$ mkdir .ssh && chmod 700 .ssh
$ touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys

现在,让我们说你的朋友约翰正在和你合作,你想让他访问你的用户帐户git。因此,将他的公钥复制到git用户的文件:~/.ssh/authorized_keys

要在朋友的计算机上生成ssh私钥 - 公钥对,请使用以下命令

$ ssh-keygen -t rsa -C "your_email@example.com"

现在创建一个可由用户git访问的目录,例如:/opt/git/project.git

$ cd /opt/git/project.git
$ git init --bare

现在,John可以将在本地计算机上完成的更改推送到您的git服务器。

$ cd myproject
$ git init
$ git add .
$ git commit -m 'initial commit'
$ git remote add origin git@gitserver:/opt/git/project.git
$ git push origin master

我认为,这些是你想要的基本步骤。您可以找到更多详细信息on git-scm.com。 相同的链接还解释了如何将git用户限制为仅使用名为git-shell的有限shell工具执行Git活动。