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

news2024/9/24 3:23:55

简介

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

分类

  • 集中式

SVN,CVS

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

  • 分布式

Git

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

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环境
[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 ~]#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 登录。

二、

访问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

查看客户端访问项目地址

三、 

[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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/672833.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电控开关详细介绍 MOSFET

目录 NMOS MOSFET的开关模型 现实生活中MOSFET的截面图 输出特性曲线 总结 MOSFET的SCS模型 MOSFET的SR模型 进一步分析 例子 PMOS CMOS(Complementary Metal-Oxide-Semiconductor) NMOS 金属氧化物半导体场效应晶体管 这是一个什么样的结构呢? 对于…

2023 年6月开发者调查统计结果——最流行的技术(2)

2023 年6月开发者调查统计结果——最流行的技术(2) 本文目录: 二十三、编程、脚本和标记语言 二十四、数据库 二十五、云平台 二十六、网络框架和技术 二十七、其他框架和库 二十八、其他工具 二十九、集成开发环境 三十、异步工具 …

chatgpt赋能python:Python查错完全指南:如何快速诊断和解决常见的错误

Python查错完全指南:如何快速诊断和解决常见的错误 Python是一种高级编程语言,它被广泛用于数据科学、机器学习、Web开发和自动化等领域。虽然Python具有易于学习和易于使用的特点,但是在编写复杂的应用程序时,错误和异常情况经常…

chatgpt赋能python:Python构造图入门指南

Python构造图入门指南 Python是一种非常强大的编程语言,它可以用于各种任务,包括数据分析、机器学习和深度学习等领域。其中,构造图是Python在数据分析领域的一项非常重要的技术,本文将为大家介绍Python构造图的入门指南。 什么…

chatgpt赋能python:Python查找手机号码

Python查找手机号码 在今天的数字时代,手机号码已成为每个人生活中必不可少的一部分。虽然我们可以轻松地拥有一部手机,但是对于那些需要通过电话来联系客户、朋友或家庭成员的人,获取正确的手机号码就显得尤为重要。 这就是为什么Python查…

【科普知识】如何解决CANopen通信一体化伺服电机PDO无法正常使用

随着现代的自动化程度不断提高,一体化电机的应用正逐渐成为行业的新趋势。 一体化伺服电机是现代工业自动化系统中常用的设备,它集成了伺服电机、驱动器和控制器等功能,提供了高效、精确的运动控制。在其系统中,我们通常使用PDO&a…

vue封装ketcher 化学式、分子式编辑器

ketcher是一个化学结构式编辑器(github地址),ketcher插件提供了传统的html standalone版、npm包react版,并没有npm包vue版,集成到vue的原理是将standalone版嵌到iframe中,通过拿到iframe中的ketcher对象&am…

解决Armbian安装UFW防火墙后无法访问1Panel面板的问题:有效解决方案揭秘

文章目录 前言armbian安装防火墙原因分析解决方案第一步:查看1panel的面板入口端口第二步:打开指定端口的访问权限第三步:重启防火墙第四步骤:查看防火墙状态【可略】 前言 官方的教程很不错,但是还是有一些缺陷&…

第四章 ResNet网络详解

系列文章目录 第一章 AlexNet网络详解 第二章 VGG网络详解 第三章 GoogLeNet网络详解 第四章 ResNet网络详解 第五章 ResNeXt网络详解 第六章 MobileNetv1网络详解 第七章 MobileNetv2网络详解 第八章 MobileNetv3网络详解 第九章 ShuffleNetv1网络详解 第十章…

.net 软件开发模式——三层架构

三层架构是一种常用的软件开发架构模式,它将应用程序分为三个层次:表示层、业务逻辑层和数据访问层。每一层都有明确的职责和功能,分别负责用户交互、业务处理和数据存储等任务。这种架构模式的优点包括易于维护和扩展、更好的组织结构和代码…

Vue的详细安装教程,使用NVM安装是我所推荐的方式

第一步:卸载之前安装的node,安装NVM 进入网站:Releases coreybutler/nvm-windows GitHub 选择一个版本进行安装即可 安装的路径我就不用多说了,全英文路径,尽量不要安装在c盘上,计算机人都懂为什么&…

vmware17+ubuntu18.04通过qemu8.0.2启动arm64虚拟机-测试vsock

文章目录 一、环境搭建1.qemu-8.0.22.buildroot配置 3.编译工具链gcc-linaro-7.2.1下载交叉编译工具链 4.linux kernel 5.16config_kernel.sh配置内核build_kernel.sh 5.启动虚拟机(1)创建磁盘镜像文件(2)拷贝内核镜像和根文件系统…

ESP32(MicroPython)端午节项目

本程序致敬了屏幕驱动例程,依次以4种字体显示Happy Dragon Boat Festival!,并重复一次。 代码如下 from ili934xnew import ILI9341, color565 from machine import Pin, SPI import m5stack import tt14 import glcdfont import tt14 import tt24 imp…

JDK自带的构建线程池的方式之newWorkStealingPool

newWorkStealingPool和之前的几种线程池的创建方式有很大的不同,之前定长、单例、缓存、定时任务的四大线程池都是基于ThreadPoolExecutor去实现的。newWorkStealingPool则是基于ForkJoinPool的方式构建出来的。 ThreadPoolExecutor的核心特点 只有一个阻塞队列Dela…

深度学习(24)——YOLO系列(3)

深度学习(24)——YOLO系列(3) 文章目录 深度学习(24)——YOLO系列(3)1. BOF(bag of freebies)2. Mosaic data augmentation3. 数据增强4. self-adversarial-training(SAT…

深入浅出MySQL索引

索引 索引在MySQL中是举足轻重的。在添加索引后,我们在MySQL的查询上会极大的提高我们的查询效率,这也是慢查询解决办法之一。 数据结构 最初的时候MySQL中是采用二叉树进行插入数据的,这样的缺点很明显,就是树太高了&#xff…

C++QT入门

CQT 文章目录 CQT1. QT概述1.1 什么是QT1.2 QT的发展史1.3 支持的平台1.4 QT版本1.5 Qt 的下载与安装1.6 QT的优点1.7 成功案例 2. 创建QT项目2.1 使用向导创建2.2 手动创建2.3 .pro 文件2.4 设置父对象2.5 按钮设置属性2.5.1 按钮设置文本2.5.2 设置移动2.5.3 设置固定大小 2.…

[进阶]网络通信:UDP通信,一发一收、多发多收

UDP通信 特点:无连接、不可靠通信。不事先建立连接;发送端每次把要发送的数据(限制在64KB内)、接收端1P、等信息封装成一个数据包,发出去就不管了。Java提供了一个java.net.Datagramsocket类来实现UDP通信。 Datagram…

Qt/C++使用QUiLoader动态加载ui资源文件

目录 动态对话框使用场景注意事项动态对话框加载获取动态对话框的控件对象与动态对话框建立关联动态修改ui资源文件效果测试 动态对话框 动态对话框(dynamic dialog)就是在程序运行时使用的从Qt设计师的.ui文件创建而来的那些对话框。动态对话框不需要通过uic把 .ui文件转换成…

【ARM裸机编程 | 海思SS528】- 操作 GPIO 寄存器输出低电平点亮 LED 灯

目录 一、概述二、看原理图,找LED灯的GPIO管脚三、使能 GPIO 管脚功能四、配置 GPIO 管脚为输出五、设置 GPIO 管脚输出高、低电平 一、概述 这篇文章主要介绍在 海思SS528 开发板,去操作某个 GPIO 寄存器输出高、低电平,来熄灭或点亮 LED 灯…