文章目录

  • Git
    • git简介
      • 区别
      • Git工作流图
      • 版本库
    • Git的基本操作
      • 问题:
      • 方案:
      • 步骤
        • 步骤一:部署git服务器
        • 步骤二:客户端测试
    • git指针操作(head指针)
      • 问题:
      • 方案
      • 步骤:head指针基本操作
    • git分支操作
      • 问题:
      • 方案:
      • 步骤:
        • 步骤一:查看并创建分支
        • 步骤二:切换与合并分支
        • 步骤三:解决版本分支的冲突问题
      • 总结
    • git服务器
      • 问题:
      • 方案:
      • 步骤:
        • 步骤一:ssh协议服务器(支持读写操作)
        • 步骤二:git协议服务器(只读操作的服务器)
        • 步骤三:HTTP协议的服务器(只读操作的服务器)

Git

git简介

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

区别

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

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

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

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

Git工作流图

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

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

版本库

典型的客户/服务器系统

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

Git的基本操作

问题:

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

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

方案:

步骤

步骤一:部署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.comname = 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   #显示当前版本版本号从那里克隆来的

每一个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支持按功能模块、时间、版本等标准创建分支,分支可以让开发分多条主线同时进行,每条主线互不影响,分支效果如图所示

一个圆圈代表一个版本,一般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 -vfeauture 3fc4c5d rmhotfix   3fc4c5d rm
* master   3fc4c5d [ahead 1] rm  # *开头代表目前在那个分支

步骤二:切换与合并分支

1)切换分支

git checkout hotfix  #切换
git branch -v   #查看当前在那个分支
####################################git checkout hotfix
Switched to branch 'hotfix'git branch -vfeauture 3fc4c5d rm
* hotfix   3fc4c5d rmmaster   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

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

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.130git clone root@192.168.19.130:/var/git/base_ssh

再次克隆不再需要密码

步骤二: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

步骤三: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)客户端访问方式

Git使用及安装教程相关推荐

  1. Git简介、安装教程附安装包

    文章目录 前言 一.git简介 二.下载安装教程 前言 团队合作,使用git是必不可少的,下面是git相关内容以及安装教程附安装包 一.git简介 1) 版本库(version control sys ...

  2. 【Git】Windows Git和TortoiseGit安装教程(Git2.23.0、TortoiseGit2.8.0、语言包2.8.0)

    介绍 这里是小编成长之路的历程,也是小编的学习之路.希望和各位大佬们一起成长! 以下为小编最喜欢的两句话: 要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡. 一个人为什么要努力? ...

  3. Git 中文详细安装教程01(安装篇)

    git官网:https://git-scm.com/ Step 1 Information Please read the following important information before ...

  4. git下载与安装教程

    1.下载地址 官网:https://git-scm.com/download/win 2.安装 选中文件编辑器 选notepad++编辑器记得要先安装好 3.测试安装是否成功 鼠标右键桌面,显示如图说 ...

  5. Git 官方安装教程

    前言 Git是一个免费的开源 分布式版本控制系统,旨在快速高效地处理从小型到大型项目的所有事务. Git 易于学习, 占地面积小,具有闪电般快速的性能.它超越了Subversion,CVS,Perfo ...

  6. Git详细安装教程,翻译

    Git详细安装教程,翻译 Git 2.21.0 Setup 1. 解释: Additional icons 附加图标 ​ On the Desktop 在桌面上 Windows Explorer in ...

  7. Git 详细安装教程(最新保姆级)

    Git 详细安装教程 1.什么是Git 2.Git 的下载 3.Git 的安装 1) GPL 第 2 版协议的内容 2)选择安装路径 3)选择安装组件 4)选择开始菜单目录 5)选择Git文件默认的编 ...

  8. 2023最新最全git安装教程,保姆级手把手式安装!!!

            目录 一.git简介 二.安装过程 1.首先进入git的官网:https://git-scm.com/然后选择Downloads. 2.接着选择与自己电脑系统对应的下载选项,我的电脑是 ...

  9. Git安装教程(Windows安装超详细教程)

    Git安装教程(Windows安装超详细教程)  weir_will 关注 0.9 2017.10.08 00:59* 字数 728 阅读 17955评论 8喜欢 41 2018年4月14日更新  更 ...

最新文章

  1. ArcBruTile 0.2.2
  2. 【原创】PostgreSQL 增量备份详解以及相关示例
  3. 深度学习中的batch理解(batch size 一次喂给神经网络的数据大小量)
  4. js_调试_01_14 个你可能不知道的 JavaScript 调试技巧
  5. How do I get the lowest value of all the non zero value pixels?
  6. 最优化课堂笔记08——非线性规划中的一些其他方法(考试你懂得)
  7. 近业务=困死在一条船上?
  8. .netcore 极速接入第三方登录
  9. 实战之Windows+SQL+Exchange cluster之前期准备(实验文档)
  10. matlab超限像素平滑法_教程 | 不做手残党,玩转像素风LOGO的三大实用技巧!
  11. 扩展欧几里得算法的实现
  12. 爱心特效代码(HTML超文本标记语言,直接改记事本后缀)
  13. LeetCode:Confusing Number II
  14. 六、路由(routing)
  15. EPICS简单实例2 -- subroutine记录(sub)介绍与使用
  16. Unity-ProBuilder
  17. warnings模块
  18. vfp:汉字翻译成拼音
  19. 943数据结构勘误表
  20. Linux per_cpu机制的详解

热门文章

  1. 大数据证实:学习使人快乐
  2. 170604 逆向-CrackMe之013
  3. 基于VB环境下的语音识别程序开发方法
  4. 【测评】迅为4418/6818开发板安卓Android开发板
  5. 新装win10系统的桌面没有“我的电脑”图标解决办法
  6. 基于Python+django的茶叶销售商城网站
  7. Mac 开发者设置强迫症
  8. 【计网面经】HTTP
  9. Keil软件添加新源文件
  10. 查找算法2——折半查找