windows集成gitlab、gerrit等多git开发环境介绍
在git代码开发环境时,有时会向gitlab、gerrit、gitee等代码托管平台提交代码,这就需要在windows开发环境集成多种git代码托管平台环境,本文将介绍如何在windows环境集成这几种环境,以gitlab、gerrit为例。......
windows集成gitlab、gerrit等多git开发环境介绍
在git代码开发环境时,有时会向gitlab、gerrit、gitee等代码托管平台提交代码,这就需要在windows开发环境集成多种git代码托管平台环境,本文将介绍如何在windows环境集成这几种环境,以gitlab、gerrit为例。
环境准备
在windows上需要安装git环境,这里不做介绍,git安装请参考
C:\Users\Admin>git --version git version 2.33.1.windows.1
gitlab、gerrit服务器
gerrti安装请参考 CentOS 7.x安装部署Gerrit完整教程_苹果树上的你的博客-CSDN博客
gitlab按照请参考gitlab下载安装及部署 - 走看看
gerrit 服务器 192.168.1.161
gitlab服务器 192.168.1.162
秘钥生成
若已经在windows环境做了全局配置则需要清除全局配置
C:\Users\Admin>git config --global --list user.email=xxxxx user.name=xxxxx
清除全局配置
C:\Users\Admin>git config --global --unset user.name "你的名字" C:\Users\Admin>git config --global --unset user.email "你的邮箱"
为gitlab环境生成公钥私钥
C:\Users\Admin>ssh-keygen -t rsa -C "你的邮箱"
回车
Enter file in which to save the key (/c/Users/Admin/.ssh/id_rsa): id_rsa_gitlab
id_rsa_gitlab 为手动输入的私钥名称,顾名思义是为gitlab生成的私钥
连续回车后会在当前文件夹生成公钥、私钥等信息文件
同理为gerrit环境生成公钥私钥
C:\Users\Admin>ssh-keygen -t rsa -C "你的邮箱"
回车
Enter file in which to save the key (/c/Users/Admin/.ssh/id_rsa): id_rsa_gerrit
id_rsa_gerrit 为手动输入的私钥名称,顾名思义是为gerrit生成的私钥
连续回车后会在当前文件夹生成公钥、私钥等信息文件
以上两步完成后会生成如下文件
id_rsa_gerrit
id_rsa_gerrit.pub
id_rsa_gitlab
id_rsa_gitlab.pub
拷贝
将生成在当前文件夹下的这四个文件复制到登录用户的.ssh目录 C:/Users/Admin/.ssh
配置
切换到C:/Users/Admin/.ssh目录,在当前目录创建config.txt文件
# gitlab # gitlab配置 Host 192.168.1.162 HostName 192.168.1.162 PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa_gitlab User git # gerrit 29418为gerrit端口 Host 192.168.1.161 HostName 192.168.1.161 User admin PubkeyAcceptedKeyTypes +ssh-rsa IdentityFile ~/.ssh/id_rsa_gerrit Port 29418
保存,重命名config.txt为config
将刚才生成的每个环境的公钥配置到对应的环境,如,复制id_rsa_gerrit.pub里的公钥信息到gerrit SSH key中
同理,在gitlab web 页面设置ssh keys,省略。
验证
在桌面想创建一个空文件夹 -> 右键 -> Git Bash Here
Admin@PS2021PFMDZGBM MINGW64 ~/Desktop/my-code $ git init Initialized empty Git repository in C:/Users/Admin/Desktop/my-code/.git/
clone项目
Admin@PS2021PFMDZGBM MINGW64 ~/Desktop/my-code (master) $ git clone ssh://192.168.1.161:29418/demo-repo Cloning into 'demo-repo'... remote: Counting objects: 16, done remote: Finding sources: 100% (16/16) remote: Total 16 (delta 2), reused 14 (delta 2) Receiving objects: 100% (16/16), done. Resolving deltas: 100% (2/2), done. Admin@PS2021PFMDZGBM MINGW64 ~/Desktop/my-code (master) $
$ cd demo-repo $ git config --local user.email "liao535299@163.com" $ git config --local user.name "admin" $ echo 'hello gerrit' >> my_test.txt $ git add my_test.txt $ git commit -m 'this a test'
注意,第一次push时,gerrit会报错,按照错误操作即可
Admin@PS2021PFMDZGBM MINGW64 ~/Desktop/my-code/demo-repo (master) $ git push origin HEAD:refs/for/master Enumerating objects: 4, done. Counting objects: 100% (4/4), done. Delta compression using up to 12 threads Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 273 bytes | 273.00 KiB/s, done. Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 remote: Resolving deltas: 100% (1/1) remote: Processing changes: refs: 1, done remote: ERROR: commit 2bacf9b: missing Change-Id in message footer remote: remote: Hint: to automatically insert a Change-Id, install the hook: remote: gitdir=$(git rev-parse --git-dir); scp -p -P 29418 admin@192.168.1.161:hooks/commit-msg ${gitdir}/hooks/ remote: and then amend the commit: remote: git commit --amend --no-edit remote: Finally, push your changes again remote: To ssh://192.168.1.161:29418/demo-repo ! [remote rejected] HEAD -> refs/for/master (commit 2bacf9b: missing Change-Id in message footer) error: failed to push some refs to 'ssh://192.168.1.161:29418/demo-repo' Admin@PS2021PFMDZGBM MINGW64 ~/Desktop/my-code/demo-repo (master) $ gitdir=$(git rev-parse --git-dir); scp -p -P 29418 admin@192.168.1.161:hooks/commit-msg ${gitdir}/hooks/ commit-msg 100% 1790 57.6KB/s 00:00 Admin@PS2021PFMDZGBM MINGW64 ~/Desktop/my-code/demo-repo (master) $ git commit --amend --no-edit [master 6103323] this a test Date: Fri Jul 15 11:26:21 2022 +0800 1 file changed, 1 insertion(+) create mode 100644 my_test.txt Admin@PS2021PFMDZGBM MINGW64 ~/Desktop/my-code/demo-repo (master) $ git push origin HEAD:refs/for/master Enumerating objects: 4, done. Counting objects: 100% (4/4), done. Delta compression using up to 12 threads Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 315 bytes | 315.00 KiB/s, done. Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 remote: Resolving deltas: 100% (1/1) remote: Processing changes: refs: 1, new: 1, done remote: remote: SUCCESS remote: remote: http://192.168.1.161:8081/c/demo-repo/+/42 this a test [NEW] remote: To ssh://192.168.1.161:29418/demo-repo * [new reference] HEAD -> refs/for/master Admin@PS2021PFMDZGBM MINGW64 ~/Desktop/my-code/demo-repo (master) $
push 到gerrit后,代码需要审核才能合并到指定分支,参考Gerrit代码审计系统实战-Gerrit 3.0.0版本快速搭建 - 尹正杰 - 博客园
更多推荐
所有评论(0)