简介
Git是一个开源的分布式版本控制系统,可以高效的处理从小到很大的项目版本管理。
分类
- 集中式
SVN,CVS
使用单一的服务器用来管理和存储所有文件的修订版本;协同开发的成员拉取或提交都需连接到这台服务器;如果服务器宕机,宕机期间任何人都不能拉取或提交,无法做到协同;如果服务器磁盘损坏,又没有备份,将丢失所有文件的修订历史,文件仅剩下成员在各自电脑中的当前版本。
- 分布式
Git
解决集中式缺点,客户端不仅是下载最新文件,而是把代码仓库完整的镜像了,包括历史修订记录。任何一个故障的协同服务器都可以使用镜像出来的本地仓库恢复。
Git是系统;GitHub是社区
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环境
[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 git@github.com:wenzi0729/first.git
[root@wenzi ~]#ll
total 4
-rw-------. 1 root root 1279 May 15 02:35 anaconda-ks.cfg
#克隆远程仓库
[root@wenzi ~]#git clone git@github.com: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
验证
本地新建仓库上传至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 'xxxxxxxx@163.com'
[root@wenzi second]#git remote add origin git@github.com: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
验证
踩坑:
一、上传到远程仓库时报错
[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 ~]#EXTERNAL_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
登录。
二、
访问http://192.168.29.141:8080,创建新项目
配置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
查看客户端访问项目地址
文章来源:https://www.toymoban.com/news/detail-499236.html
三、
[root@wenzi ~]#git config --global user.name "root"
[root@wenzi ~]#git config --global user.email "git@192.168.29.141"
[root@wenzi ~]#git clone git@192.168.29.141: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
文章来源地址https://www.toymoban.com/news/detail-499236.html
到了这里,关于Git——分布式版本控制系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!