我对git的理解是基本的,但是我理解一个项目可以从一个系统“推送”到一个远程系统,从那里可以克隆或将其他人拉到其他计算机。
例如,据我所知,github.com是一个可以推送项目或可以托管项目的域名。
我的问题是,我可以在家庭服务器上设置类似github的存储库,然后我可以将我的工作备份推送到,假设我知道相关信息,例如服务器IP等等。
如果这个问题的答案是“是”,那么问题2就是“如何?”。
编辑:我想我可能真的想要使用SVN系统而不是Git系统吗?
答案 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
如果您有窗户,可以测试一下:
如果您无法翻译页面(最后一页是西班牙语),您可以在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活动。