上一篇文章,我们在本地虚拟机中安装了git服务器,《Rocky 9.x 必看!Linux 下 GIT 服务器安装全攻略》,那下面我们使用GIT创建仓库,并且上传代码,我们通过最简单的链接方式上传,SSH的方式。
一、创建创库文件夹
在个人首页创建文件夹路径 /git/repos/,用于存放所有项目的代码,创建并给与权限,如下:
sudo mkdir -p /home/iRainGit/git/repos
sudo chown -R iRainGit:iRainGit /home/iRainGit/git/repos
二、创建项目仓库
创建项目仓库,进入仓库:
sudo mkdir -p /home/iRainGit/git/repos/test.git
cd /home/iRainGit/git/repos/test.git
三、初始化裸仓库
git init --bare
如果出现权限问题,如下:
再次给权限就好了:
sudo chown -R iRainGit:iRainGit /home/iRainGit/git/repos/test.git
按理说,设置父级文件夹权限,子集都不用设权限了才是,不过我们不在乎这么一两步。
再次执行git init --bare,如下:
初始化成功!
到这一步,我们已经创建好了一个名为test的仓库,并且初始化了该仓库,只是里面没有存放任何文件,下面我们通过SSH链接到仓库,并上传代码,但是SSH很麻烦,还需要配置。没办法,现在先尝试用SSH的方式,之后再回来学习如何使用HTTPS的方式链接。
四、配置SSH链接
检查虚拟机的 SSH 服务是否运行:
sudo systemctl status sshd
可以看到状态已经开启,并且开发了22端口,这都是我们上一篇文章《Rocky 9.x 必看!Linux 下 GIT 服务器安装全攻略》的结果。
五、客户端生成 SSH 密钥
在开发机器(客户端,主机)上生成 SSH 密钥对,我们的开发机器是windows系统,首先要安装git,关于windows上安装git非常简单,这里就默认已经安装git了。
随便一个文件夹打开中,或者在桌面右键打开git bash,然后写上命令回车:
ssh-keygen -t rsa -b 4096 -C "your.email@example.com"
等待输入,说明了生成秘钥的路径,回车确认即可。
秘钥已经存在,问,要不要覆盖,我也不知道啥时候搞得,先备份一下,在覆盖,备份是一个好习惯,大家要注意。
输入密码,那就输入123456,回车,再次确认密码,回车:
可以看到,秘钥路径下,有两个文件:
六、将公钥添加到GIT服务器(虚拟机)
在git服务器机器上,在个人主页创建authorized_keys文件,并写入公钥
mkdir -p ~/.ssh
nano ~/.ssh/authorized_keys # 粘贴公钥内容,保存退出(Ctrl+O, Enter, Ctrl+X)
设置权限
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
七、验证 SSH 配置
sudo nano /etc/ssh/sshd_config
确保服务器 /etc/ssh/sshd_config 包含:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication yes # 若需要密码认证
PermitRootLogin yes # 若需要 root 登录(不推荐)
八、测试链接
在开发机器端,在git bash中写上:
ssh 用户名@服务器IP地址
输入密码回车:
九、上传代码
上文我们创建了仓库test,位置是
/home/iRainGit/git/repos/test.git,现在我们将其克隆下拉,如下命令:
git clone iRainGit@192.168.137.99:/home/iRainGit/git/repos/test.git
输入秘钥密码,回车:
搞事了,找不到命令,后来发现,安装GIT没有配置环境变量,继上一篇文章,无语中...
十、配置git环境变量
配置所有用户有效,编辑/etc/profile
sudo nano /etc/profile
在文件尾部写入:
export PATH="/u01/git/bin:$PATH"
文件生效
source /etc/profile
十一、重新克隆代码
git clone iRainGit@192.168.137.99:/home/iRainGit/git/repos/test.git
进入test项目,写一个自定义文件,
cd test
touch README.md
git add README.md
git commit -m "初始提交"
git push origin master
到此,完成了此篇文章的目的。
讨论:关于SSH链接GIT的开发缺点和优点
优点我倒没觉得有啥优点,缺点倒是一大堆,哈哈,以后在搞HTTPS的方案吧!睡觉了。