在团队工作或者个人开发中,版本控制尤为重要。折腾了一天,搭建了一个Git服务,用于项目开发的版本控制。搭建的Git是通过SSH传输的,并配置了SSH的密钥登录。
Git服务端安装
很简单,一句话搞定:
sudo apt install git
Git用户
创建用户
sudo useradd git -s /usr/bin/git-shell -m
在这里我们使用git-shell
以保证安全。如果使用bash,就相当于允许git用户登录了,这样就显得很不安全。git-shell
是git自带的一个仅用于Git协议的执行环境。
在这里还需要注意一点,就是要创建家目录/home/git
,主要是用来存放SSH密钥,以实现免密码登录。(SSH服务端的不同用户的秘钥存储在用户自己的家目录.ssh
文件夹下)
创建密钥对
在服务器上执行:
cd /home/git/
ssh-keygen
cd /home/git/.ssh/
然后会看见这个文件夹下生成了id_rsa
和id_rsa.pub
文件。执行:
cat id_rsa.pub >> authorized_keys
即将公钥放置到authorized_keys
文件夹里。如果要生成多个密钥对,则需手动添加到这个文件中,一行一个公钥。
最后将id_rsa
这个私钥保存到客户端电脑上,以待导入。这样一个密钥对就生成成功了。
创建代码仓库
假设我想创建一个新项目,项目将创建在/home/git/blablabla
sudo -u git git --bare init blablabla
或者写blablabla.git
也行
这句指令首先指明,使用git用户身份执行,然后叫git程序新建了一个仓库叫blablabla
。此时blablabla
内容结构如下:
blablabla/
|-- .git/
|-- HEAD
|-- config
|-- ...
.git
内的文件为git配置文件之类的,记录了代码仓库的信息。blablabla下其他文件夹后则存放代码文件夹。
这里还需要注意一点,在服务器上新建仓库,一定要带上–bare参数。否则会出现客户端无法上传代码的情况。
GUI客户端
Git的bash客户端就不再多说了,用bash的大佬根本不需要我介绍了……下面介绍几款支持Git的客户端软件。
GitGUI
Git的官方GUI版本,小巧,使用了一下,感觉界面有点不友好。
SourceTree
SourceTree是一个比较老牌的Git图形化客户端了。使用了一个下午,爱不释手。感觉其界面与时俱进,Word2012风格,还挺好看。不过要注册一个SourceTree账号才能安装,才能安装或连接私有Git仓库。注册就注册呗。
VisualStudio Code
惊不惊喜?意不意外?VS居然也支持Git!不过它只支持本地Git仓库貌似,没法PULL仓库到服务器。不过貌似有插件可以拓展这一功能。
总结
简单粗暴,Git的搭建就完成了。当然了,这里只介绍了Git服务的简单搭建,但是关于Git究竟应该怎么用,才能提高工作效率,提高合作效率,还是需要日后在日常使用中总结了。
待研究
能否对Git用户进行chroot?
如何搭建HTTP协议的Git?(类似于GitHub的网页)
Git究竟是如何提高工作效率的?高级用法有哪些?