IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Git完整版教程及介绍 -> 正文阅读

[开发工具]Git完整版教程及介绍

Git

git简介

git是一个版本控制软件,目前主流的版本控制软件有git和svn

区别

集中式版本控制系统(svn)

  • 开发者之间共用一个仓库(repository)
  • 所有操作需要联网,一旦断网,无法保存操作

分布式版本控制系统(git)

  • 每个开发者都是一个仓库的完整克隆,每个人都是服务器
  • 支持断网操作

Git工作流图

git先建立一个共享目录,客户端上传文件,每次修改,都会在git服务器上保留各个版本

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-10QGurir-1631876698165)(E:\Typort\image-20210913214157795.png)]

git使用共享目录正式名称为版本库

版本库

典型的客户/服务器系统

  • 版本库是版本控制的核心
  • 任意数量的客户端
  • 客户端通过写数据库方向代码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iyluvH5K-1631876698168)(E:\Typort\image-20210913213714080.png)]

Git的基本操作

问题:

要求先快速搭建好一台Git服务器,并测试该版本控制软件,要求如下

  • 安装git软件
  • 创建版本库
  • 客户端克隆版本仓库到本地
  • 本地工作目录修改数据
  • 题交本地修改到服务器

方案:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9Z9RG8ch-1631876698170)(E:\Typort\image-20210913221131963.png)]

步骤

步骤一:部署git服务器

1)yum安装git软件

yum -y install git
git --version

2)初始化一个空仓库

mkdir /var/git
git init /var/git/project --bare   #创建仓库
ls /var/git/project

步骤二:客户端测试

使用git常用指令列表

指令使用
clone将远程服务器的仓库克隆到本地
config修改git配置
add添加修改到暂存区
commit提交修改到本地仓库
push提交修改到远程服务器

1)clone克隆服务器仓库到本地

yum -y install git
git clone root@192.168.19.130:/var/git/project
cd project
ls -a
ls .git  #git服务器中默认的文件在这里

2)修改git配置

git config --global user.name "your name"
git config --global user.email "131@163.com"
cat ~/.gitconfig   #git服务器的使用用户,区分不同的用户的git
[user]
	email = 131@163.com
	name = your name

3)本地工作区对数据进行增删改查(必须进入仓库在进行操作)

这个project就是我们本地工作区(也是仓库)

echo "init date "> init.txt
mkdir demo 
cp /etc/hosts demo

4)查看仓库中数据件的状态

git status

5)将工作区的修改提交到缓存区

git add .  #添加文件

6)将暂存区修改提交到本地仓库

git commit -m "注释"   #一般注释用来描写这个文件发生了什么变化

多创建几个版本,方便接下来测试

7)将本地仓库中的数据推送到远程服务器(推送到git服务器)

git config --global push.default simple
git push

8)将服务器上的数据更新到本地

备注:可能其他人也在修改数据并提交服务器,就会导致自己的本地数据为旧数据,使用pull就可以将服务器上新的数据更新到本地

git pull

9)查看版本日志

git log   
git log --pretty=oneline  #显示一行信息
git log --oneline     #以更简短的方式显示
git reflog   #显示当前版本版本号从那里克隆来的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FtLUtOVh-1631876698173)(E:/Typort/image-20210917163705254.png)]

每一个commit 是一个版本

备注:客户端也可使用图形程序访问服务器,windows需要安装git和tortoisegit

在Linux中git的图形化软件包(git-gui)

git指针操作(head指针)

问题:

沿用上述练习,使用head指针,具体要求如下:

查看git版本信息

移动指针

通过移动head指针恢复数据

方案

head指针是一个可以在任何分支和版本移动的指针,通过移动指针我们可以将数据还原至任何版本,没做一次提交操作都会导致git更新一个版本,head指针也跟着自动移动

步骤:head指针基本操作

1)准备工作(多对数据仓库进行修改,提交操作,以产生多个版本)

 echo "asdaweq" >> init.txt 
 git add .
 git commit -m "v2"
 echo "asdaweq" >> new.txt 
 git add .
 git commit -m "v3"
 echo "asdaw123eq" >> new.txt 
 git add .
 git commit -m "v4"
 git push

2)查看版本信息

git log --oneline
a0789a1 (HEAD -> master, origin/master) v4
a308d7d v3
1423449 v2
3759966 v1
2a88674 zhushu
#head指向谁,当前在那个版本
也可使用git reflog来查看
git reflog 
a0789a1 (HEAD -> master, origin/master) HEAD@{0}: commit: v4
a308d7d HEAD@{1}: commit: v3
1423449 HEAD@{2}: commit: v2
3759966 HEAD@{3}: commit: v1
2a88674 HEAD@{4}: commit (initial): zhushu

3)移动head指针,将数据还原到任意版本

git reset --hard 版本号

4)模拟误删除后的数据还原操作

删除数据并提交,然后移动指针到有这个数据的版本,复制,然后回到刚刚的版本,在进行粘贴

git rm init.txt
git commit -m "rm"
git reflog 
git reset --hard 版本号
cp init.txt /tmp/
git reset --hard 版本号(最新版)
cp /tmp/init.txt .
git add .
git commit -m "还原"

git分支操作

问题:

沿用上述练习,使用git分支,具体要求如下

  • 查看分支
  • 创建分支
  • 切换分支
  • 合并分支
  • 解决分支的冲突

方案:

git支持按功能模块、时间、版本等标准创建分支,分支可以让开发分多条主线同时进行,每条主线互不影响,分支效果如图所示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HLa8DeM2-1631876698175)(E:/Typort/image-20210917172107179.png)]

一个圆圈代表一个版本,一般git服务器都是存放代码的

master分支(主分支,是代码的核心)

develop分支(develop最新开发成果的分支)

release分支(未发布新产品设置的分支)

hotfix分支(为了修复软件bug缺陷的分支)

feature分支(为开发新功能设置的分支)

步骤:

步骤一:查看并创建分支

1)查看当前分支

git status   
git branch -v   #查看所有分支

2)创建分支

 git branch hotfix  #创建一个hotfix的分支
 git branch feauture  #创建一个feature的分支,
 #创建的分支和master一致,因为是在master的基础上创建的
 git branch -v
  feauture 3fc4c5d rm
  hotfix   3fc4c5d rm
* master   3fc4c5d [ahead 1] rm  # *开头代表目前在那个分支

步骤二:切换与合并分支

1)切换分支

git checkout hotfix  #切换
git branch -v   #查看当前在那个分支
####################################
 git checkout hotfix 
Switched to branch 'hotfix'
 git branch -v
  feauture 3fc4c5d rm
* hotfix   3fc4c5d rm
  master   3fc4c5d [ahead 1] rm

2)在新的分支上可以继续进行数据操作(增删改查)

echo "fix" > fix.txt
git add .
git commit -m "fix"

3)将hotfix修改的数据合并到master分支

注意:在合并前必须要先切换到master分支,然后在执行merge命令

git checkout master 
ls 
git merge hotfix 

在这里插入图片描述

4)将所有本地修改提交给远程服务器

git push

步骤三:解决版本分支的冲突问题

1)在不同分支中修改相同文件的相同行数据,模拟数据冲突

git checkout hotfix 
echo "AAA" > a.txt
git add .
git commit -m "a"
git checkout master
echo "BBB" > a.txt
git add .
git commit -m "b"
git merge hotfix

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r2g5lfw1-1631876698177)(E:/Typort/image-20210917175416620.png)]

自动合并失败,修正冲突然后提交修正的结果

2)查看有冲突的文件内容,修改文件为最终版本的数据,解决冲突

vim a.txt
<<<<<<< HEAD   #该文件包含有冲突的内容
BBB
=======
AAA
>>>>>>> hotfix
vim a.txt     #修改该文件,为最终需要的数据,解决冲突
BBB
git add .
git commit -m "resoled"

总结

分支指针与head指针的关系

  • 创建分支的本质是当前提交上创建一个可以移动的指针
  • 如何判断当前分支,答案是根据head这个特殊指针

分支操作流程如图5、6、7、8所示

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

git服务器

问题:

沿用上面练习,了解git不同的服务器模式,具体要求如下:

  • 创建ssh协议服务器
  • 创建git协议服务器
  • 创建HTTP协议服务器

git是基于ssh协议来完成操作的

方案:

git支持很多服务器协议形式,不同协议的git服务器,客户端就可以使用不同的形式访问服务器,创建的服务器协议有ssh协议,git协议,HTTP协议

步骤:

步骤一:ssh协议服务器(支持读写操作)

1)创建基于密码验证的ssh协议服务器(git服务器操作)

git init --bare /var/git/base_ssh

2)客户端访问的方式(A操作)

git clone root@192.168.19.130:/var/git/base_ssh
rm -rf base_ssh/

3)客户端生成ssh密钥,实现免密码登录git服务器(客户机操作)

 ssh-keygen -f /root/.ssh/id_rsa -N ''
 ssh-copy-id 192.168.19.130
 git clone root@192.168.19.130:/var/git/base_ssh

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MS08CRaU-1631876698182)(E:/Typort/image-20210917183036227.png)]

再次克隆不再需要密码

步骤二:git协议服务器(只读操作的服务器)

如果服务器中没有ssh服务,可使用以下方法

1)安装git-daemon软件包(git服务器操作)

yum -y install git-daemon

2)创建版本库(git服务器操作)

git init --bare /var/git/base_git

3)修改配置文件,启动git服务(git服务器操作)

vim /usr/lib/systemd/system/git@.service
修改前
...
ExecStart=-/usr/libexec/git-core/git-daemon --base-path=/var/lib/git --export-all \
          --user-path=public_git --inetd --log-destination=stderr --verbose
...
修改后
...
ExecStart=-/usr/libexec/git-core/git-daemon --base-path=/var/git --export-all \
          --user-path=public_git --inetd --log-destination=stderr --verbose
...

启动服务
systemctl start git.socket 

4)客户端访问

git clone git://192.168.19.130/base_git

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xR2CorVl-1631876698183)(E:/Typort/image-20210917184302294.png)]

步骤三:HTTP协议的服务器(只读操作的服务器)

前两种方式要都要求客户端有git软件,才能进行操作,http不装软件,也能看到仓库

1)安装gitweb、httpd软件包(git服务器操作)

yum -y install httpd gitweb

2)修改配置文件,设置仓库根目录

vim +11 /etc/gitweb.conf    #打开配置文件,定位在11行
#第十行有模板
$projectroot = "/var/git"; #添加一行

3)创建版本仓库(git服务器操作)

git init --bare /var/git/base_http

4)启动httpd服务器

systemctl start httpd

5)客户端访问方式

http://192.168.19.130/git

在这里插入图片描述

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-09-18 10:23:12  更:2021-09-18 10:25:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 4:20:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码