Git——分布式版本控制系统

简介

Git是一个开源的分布式版本控制系统,可以高效的处理从小到很大的项目版本管理。

分类

  • 集中式

SVN,CVS

使用单一的服务器用来管理和存储所有文件的修订版本;协同开发的成员拉取或提交都需连接到这台服务器;如果服务器宕机,宕机期间任何人都不能拉取或提交,无法做到协同;如果服务器磁盘损坏,又没有备份,将丢失所有文件的修订历史,文件仅剩下成员在各自电脑中的当前版本。

Git——分布式版本控制系统_第1张图片

  • 分布式

Git

解决集中式缺点,客户端不仅是下载最新文件,而是把代码仓库完整的镜像了,包括历史修订记录。任何一个故障的协同服务器都可以使用镜像出来的本地仓库恢复。

Git——分布式版本控制系统_第2张图片

Git是系统;GitHub是社区

Git命令详解:http://t.csdn.cn/p5pQe

GitHub

准备一个Github账号

#安装Git
[root@wenzi ~]#yum -y install git
#配置秘钥
[root@wenzi ~]#ssh-keygen -t rsa -C 'GitHub邮箱'
#查看秘钥,将公钥复制到GitHub中
[root@wenzi ~]#ll .ssh/
total 8
-rw------- 1 root root 2602 Jun 19 23:02 id_rsa
-rw-r--r-- 1 root root  573 Jun 19 23:02 id_rsa.pub
[root@wenzi ~]#cat .ssh/id_rsa.pub

克隆GitHub已有仓库

GitHub

Git——分布式版本控制系统_第3张图片

本地

#配置git环境
[root@wenzi ~]#git config --global user.name 'GitHub用户名'
[root@wenzi ~]#git config --global user.email 'GitHub邮箱'
#查看git配置
[root@wenzi ~]#cat .gitconfig
#设置远程仓库地址
[root@wenzi ~]#git remote add origin [email protected]:wenzi0729/first.git
[root@wenzi ~]#ll
total 4
-rw-------. 1 root root 1279 May 15 02:35 anaconda-ks.cfg
#克隆远程仓库
[root@wenzi ~]#git clone [email protected]:wenzi0729/first.git
Cloning into 'first'...
remote: Enumerating objects: 6, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 6 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (6/6), done.
[root@wenzi ~]#ll
total 4
-rw-------. 1 root root 1279 May 15 02:35 anaconda-ks.cfg
drwxr-xr-x  3 root root   35 Jun 19 23:30 first
[root@wenzi ~]#cat first/README.md 
This is created file in GitHub
[root@wenzi ~]#cd first/
#在本地修改仓库文件
[root@wenzi first]#echo 'local local local' >> README.md 
#提交当前目录下所有文件到缓存区
[root@wenzi first]#git add .
#提交到本地仓库
[root@wenzi first]#git commit -m 'This is local created file'
[main b07feb5] This is local created file
 1 file changed, 1 insertion(+)
#提交到远程仓库
[root@wenzi first]#git push origin main
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Writing objects: 100% (3/3), 287 bytes | 287.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To github.com:wenzi0729/first.git
   759f39c..b07feb5  main -> main

验证 

Git——分布式版本控制系统_第4张图片

本地新建仓库上传至GitHub

GitHub需要新建一个空仓库second

#创建新仓库专用目录
[root@wenzi ~]#mkdir second;cd second
#使该目录称为git管理仓库
[root@wenzi second]#git init
设定环境
[root@wenzi second]#git config --global user.name 'wenzi'
[root@wenzi second]#git config --global user.email '[email protected]'
[root@wenzi second]#git remote add origin [email protected]:wenzi0729/second.git
#创建新文件
[root@wenzi second]#echo '123123123' > 123.txt
#将git本地的分支名改为main
[root@wenzi second]#git branch -m master main
#因为GitHub中second是新建的仓库,指定默认使用main分支
[root@wenzi second]#git pull --rebase origin main
[root@wenzi second]#git push origin main

验证 

Git——分布式版本控制系统_第5张图片

踩坑:

一、上传到远程仓库时报错

[root@wenzi second]#git push origin main
error: src refspec main does not match any
error: failed to push some refs to 'github.com:wenzi0729/second.git'

2020年10月起,仓库默认分支从master变为main,需要将本地和远程仓库同步

git branch -m master main

二、当GitHub中新建仓库,git第一次上传时报错

[root@wenzi second]#git push origin main
To github.com:wenzi0729/second.git
 ! [rejected]        main -> main (fetch first)
error: failed to push some refs to 'github.com:wenzi0729/second.git

除了将本地仓库和远程仓库关联外,还需要关联分支

git pull --rebase origin main

GitLab

不支持的 Linux 发行版和类 Unix 操作系统

  • Arch Linux
  • Fedora
  • FreeBSD
  • Gentoo
  • macOS

安装配置

官方文档:GitLab下载安装_GitLab最新中文免费版下载安装-极狐GitLab

gitlab配置文件:/etc/gitlab/gitlab.rb

Gitlab相关命令:

  • 重新加载配置文件:gitlab-ctl reconfigure
  • 重启:gitlab-ctl restart
  • 查看服务状态:gitlab-ctl status
  • 查看所有日志:gitlab-ctl tail
  • 检查gitlab:gitlab-rake gitlab:check SANITIZE=true --trace

一、

[root@wenzi ~]#yum install -y curl policycoreutils openssh-server openssh-clients
[root@wenzi ~]#yum -y install postfix
[root@wenzi ~]#systemctl enable --now postfix.service
[root@wenzi ~]#curl -fsSL https://packages.gitlab.cn/repository/raw/scripts/setup.sh | /bin/bash
[root@wenzi ~]#XTERNAL_URL="http://192.168.29.141:8080" yum install -y gitlab-jh

安装完访问 http://192.168.29.141:8080 ,网页提示502,查看日志 gitlab-ctl tail | grep error、gitlab-ctl tail | grep 8080

发现报错:

{"correlation_id":"","duration_ms":0,"error":"badgateway: failed to receive response: dial unix /var/opt/gitlab/gitlab-rails/sockets/gitlab.socket: connect: connection refused","level":"error","method":"GET","msg":"","time":"2023-06-22T02:02:08+08:00","uri":""}

2023-06-21_18:04:16.06570 /opt/gitlab/embedded/lib/ruby/gems/3.0.0/gems/puma-5.6.5/lib/puma/binder.rb:341:in `initialize': Address already in use - bind(2) for "127.0.0.1" port 8080 (Errno::EADDRINUSE)

原因1:puma端口冲突

解决办法:vim /etc/gitlab/gitlab.rb ,在默认端口# puma['port'] = 8080下新增一行 puma['port'] = 8989 ,此端口不能和external_url重复。修改完毕保存,重新加载配置文件,重启gitlab,等待两三分钟再次访问http://192.168.29.141:8080即可

原因2:使用虚拟机的话,内存不够也会出现502,要给gitlab足够的内存可用,个人感觉内存4G以上,或者配置交换分区。

除非您在安装过程中指定了自定义密码,否则将随机生成一个密码并存储在 /etc/gitlab/initial_root_password 文件中(出于安全原因,24 小时后,此文件会被第一次 gitlab-ctl reconfigure 自动删除,因此若使用随机密码登录,建议安装成功初始登录成功之后,立即修改初始密码)。使用此密码和用户名 root 登录。

Git——分布式版本控制系统_第6张图片

二、

访问http://192.168.29.141:8080,创建新项目

Git——分布式版本控制系统_第7张图片

配置ssh秘钥,查看id_rsa.pub,将公钥复制到gitlab中

[root@wenzi ~]#ssh-keygen
[root@wenzi ~]#ll .ssh/
total 8
-rw------- 1 root root 2610 Jun 22 02:40 id_rsa
-rw-r--r-- 1 root root  576 Jun 22 02:40 id_rsa.pub

Git——分布式版本控制系统_第8张图片

查看客户端访问项目地址

Git——分布式版本控制系统_第9张图片

三、 

[root@wenzi ~]#git config --global user.name "root"
[root@wenzi ~]#git config --global user.email "[email protected]"
[root@wenzi ~]#git clone [email protected]:root/myceshi.git
[root@wenzi ~]#cd myceshi/
[root@wenzi myceshi]#touch local.txt
[root@wenzi myceshi]#git add local.txt
[root@wenzi myceshi]#git commit -m "This is local"
[root@wenzi myceshi]#git push origin main

Git——分布式版本控制系统_第10张图片

你可能感兴趣的:(运维工具,#,Git,运维,linux,git)