版本控制是一个项目不可或缺的一部分,可以帮助开发者追踪文件的变更、分支管理、版本回退、版本发布等。所以建议当开始一个项目或者有想法进行开发时,都尽量考虑用上版本控制。常用的版本控制系统有svn
、Git
,其中Git由于其开源、分布式、快速高效等特点已俨然成版本管理系统的首选。
Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理,是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。由于其分布式的特点,我们完全可以只在本地保存整个项目仓库,但考虑多人协作的需求,一般情况是建立一个远程仓库,项目的所有开发者都围绕这个远程仓库进行同步和提交。虽然Github
已经免费提供了这样的远程仓库给用户,但这种仓库一般是全网公开,即所有人都可以看到里面的提交。如果我们自己有云主机(最好是Linux系统)的话,要搭建一个Git服务器创建远程仓库并不难,现在让我们开始吧。
搭建Git服务器不需要什么复杂的工具,因为git这个工具已经包括所有的功能。
一般Linux的发行版已经内置git,如果没有的话安装一下
sudo apt-get install git
sudo adduser git
该用户是用来运行我们git服务器的,在云主机上与我们的普通用户区分。当我们的本地git客户端与远程仓库交互时,云主机上用来运行git程序的用户就是我们刚添加的git
了。对该用户设置一下密码:
sudo passwd git
由于用户git主要作为仓库使用,一般人员不可以也不应该登陆和进入git,所以使用工具git-shell禁止用户git登陆shell。
先在/etc/shells中加入/usr/bin/git-shell作为可用shell;
sudo vim /etc/shells
然后改变用户git的默认shell。
sudo chsh git -s git-shell
由于用户git已经禁止登陆了,我们直接使用root权限在/home/git目录上创建所有远程仓库的目录srv/
sudo mkdir /home/git/srv
此时可以在srv/上创建一个空的远程仓库,命令为:
sudo cd /home/git/srv sudo git init --bare elephant.git
其中--bare参数表示裸仓库,一般会将远程仓库初始化为裸仓库。
现在最好设置好仓库的权限,由用户git来管理,其他用户无管理权限。
sudo chown -R git /home/git/srv sudo chmod -R 770 /home/git/srv
现在客户端需要与远程仓库同步,可以用ssh进行登陆,而且git也支持ssh连接。
客户端需要创建ssh-key,使用ssh-keygen创建公钥私钥
ssh-keygen -t rsa -C "xxx@email.com"
Windows一般把生成的公钥私钥放在
C:\Users\xxxx.ssh\
把.ssh\id_rsa.pub(公钥)的内容拷贝出来,放置到云主机的git用户的/home/git/.ssh/authorized_keys
()中,表示已认证过的公钥。
此时,在本地git客户端则可以使用以下命令拉取到远程仓库了
git clone git@server:srv/elephant.git了
上面的仓库地址中,git表示云主机的用户git,server表示主机地址,即云主机的ip,加上后面的内容则表示云主机上的/home/git/srv/elephant.git这个裸仓库。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有