Git的简单学习

目录

一、版本控制(了解)

(1)版本控制概述

(2)版本控制软件的作用

(3)版本控制的应用场景

(4)集中式版本控制工具

(5)分布式版本控制工具

二、Git

(1)Git的简单介绍

(2)Git下载

(3)关于代码托管中心

三、Git命令以及简单实操

(1)Git的基本命令

(2)Git的简单实操

Git命令流程演示

Git目录

Git命令流程演示(2)

(3)Git的分支操作

分支的好处

分支的操作

分支的命令使用

冲突


学习Git之前,首先要对版本控制有个简单的了解

一、版本控制(了解)

(1)版本控制概述

版本控制是一种记录文件内容变化 ,以便将来查阅特定版本修订情况的系统。
可以记录文件修改历史记录 ,从而让用户能够查看历史版本,方便版本切换

(2)版本控制软件的作用

  1. 保存和管理文件
  2. 提供客户端工具进行访问
  3. 提供不同版本文件的比对功能
  4. 支持多人协作开发

(3)版本控制的应用场景

  • 软件开发协作(核心 场景

支持多人并行开发 ,杜绝文件覆盖、修改冲突;通过分支隔离 新功能开发、bug修复,保护主项目稳定;可追溯修改记录 ,故障时快速回滚版本,规范项目迭代流程。

  • 规范化版本迭代管理

统一管理迭代版本 ,区分测试版、正式版,规范版本命名与归档;摒弃杂乱自定义文件名,方便版本追溯、复盘与复用

  • 办公文档协同编辑

适用于标书、报告、制度、论文等各类文档,支持多人协同编辑自动留存历史版本、对比版本差异 ,可一键恢复误改内容,保障文档安全可控。

  • 设计媒体文件管理

管控UI设计、视频剪辑、建模工程等源文件与素材,记录改版细节 ;解决设计文件版本混乱、文件丢失问题,方便工作交接与方案复盘。

  • 运维配置版本管控

统一管理各类运维配置 ,区分多环境配置;配置出错可快速回滚修复 ,实现运维配置标准化、可追溯、可复用

  • 远程/跨团队协作

支持异地团队共享项目文件、实时同步更新 ,无需反复传输文件,彻底解决异地协作版本不同步、重复修改的问题。

  • 个人资料归档留存

用于个人笔记、毕业设计、私有项目等资料管理,自动留存修改记录防止文件丢失,支持跨设备同步,方便资料沉淀与复用。

(4)集中式版本控制工具

CVS 、 SVN(Subversion) 、 VSS (微软)等等
集中化的版本控制系统诸如 CVS 、 SVN 等,都有一个单一的集中管理的服务器 ,保存所有文件的修订版本 ,而协同工作的人们都通过客户端连到这台服务器 ,取出最新的文件或者提交更新。多年以来,这已成为版本控制系统的标准做法。

  • 优点:
  1. 每个人都可以在一定程度上看到项目中的其他人正在做些什么。
  2. 管理员可以轻松掌控每个开发者的权限,并且管理一个集中化的版本控制系统。
  • 缺点:
  1. 在离线状态下开发者无法进行版本管理开发
  2. 每个开发者只有应用代码库的一个版本
  3. 中央服务器的单点故障。如果服务器宕机一小时,那么这一小时内,谁都无法提交

更新,也就无法协同工作。

(5)分布式版本控制工具

Git 、 Mercurial 、 Bazaar 、 Darcs等等
分布式的版本控制系统出现之后:

  • 服务器断网的情况下也可以进行开发,等到有网时再 push 到仓库中
  • 每个客户端保存的是整个代码库的所有版本
  • 服务器可以是集群的,主从复制,一个宕机以后,客户端还可以连其他服务器

二、Git

(1)Git的简单介绍

Git就是一种分布式版本控制系统 ,且是免费的、开源的,它易于学习,占地面积小,性能极快。 它拥有有廉价的本地库,方便的暂存区域和多个工作流分支

(2)Git下载

官网地址: https://git-scm.com/
使用文档地址: https://git-scm.com/docs

(3)关于代码托管中心

  • 互联网
  1. GitHub(地址:https://github.com/),是一个面向开源及私有软件项目的托管平台,因为只支持 Git 作为唯一的版本库格式 进行托管,故名 gitHub。因为是国外网站所以从国内访问很慢。
  2. Gitee / 码云(地址:https://gitee.com/),是国内的一个代码托管平台,由于服务器在国内,所以相比于 GitHub,码云速度会更快。
  • 局域网

GitLab(地址: https://about.gitlab.com/ )是一个用于仓库管理系统的开源项目,使用 Git 作为代码管理工具,并在此基础上搭建起来的 web 服务。与 GitHub 的使用类似,有特殊需求不能使用外网的代码托管中心,可以在局域网内搭建自己的代码托管中心服务器。

三、Git命令以及简单实操

(1)Git的基本命令

命令名称 作用
git config --global user.name 用户名 设置用户签名
git config --global user.email 邮箱 设置用户邮箱
git init 初始化本地库
git status 查看本地库状态
git add 文件名 添加到暂存区
git commit -m "提交日志说明" 文件名 提交到本地库
git reflog 查看历史记录
git reset --hard 版本号 版本穿梭

(2)Git的简单实操

首先进行简单的全局用户签名,Git 首次安装 必须设置一下用户签名,否则无法提交代码。

bash 复制代码
git config --global user.name 用户名

git config --global user.email 邮箱

Git命令流程演示

  • 先进入我们需要实操的目录:

需要注意的是,Git与Linux系统相同,将\符号作为一个转义字符,所以一般路径都用/或者\\

  • 初始化本地仓库:
bash 复制代码
git init
  • 查看本地仓库状态:
bash 复制代码
git status


On branch master :在 master 默认主干分支
No commits yet :还没有任何本地提交

  • vim进行配置文件

再次查看状态,发现文件没有纳入本地库,无法被git管理

  • 添加至暂存区
bash 复制代码
# 添加所有文件
git add .

# 添加指定文件
git add 文件名
  • 提交本地仓库
bash 复制代码
# -m 后面接的是版本描述信息
git commit -m "日志信息" 文件名

再次查看一下状态

发现没有问题了
三种状态:

红:在工作区,未添加到暂存区

绿:已添加到暂存区,未添加到本地库

空:所有文件已经都添加到本地库

Git目录

.git为隐藏文件夹 ,是本地的版本库

.git文件夹下的index文件 ,就是暂存区

.git文件夹下的demo文件 ,就是工作区

Git命令流程演示(2)

  • 修改hello.txt文件

发现又不在暂存区了,所以再次添加

  • 工作区文件和暂存区比较
bash 复制代码
git diff 文件名
  • 本地库和暂存区版本比较
bash 复制代码
git diff --cached 文件名
  • 查看历史版本
bash 复制代码
# 查看版本信息
git reflog
git reflog -n 数量

# 查看版本详细信息
git log
  • 版本穿梭(回退版本)
bash 复制代码
git reset --hard 版本号

可以看到之前的版本号进行了变更

那我们退回之前的版本

可以看到回退成功了,同时hello,txt文件的内容也修改成功
说明: Git 切换版本,底层其实是移动的 HEAD 指针。

  • 删除文件
bash 复制代码
# 删除文件
rm 文件名

#删除一个已经在本地版本库中的文件:删除后需要提交
git rm 文件名
git commit -m '删除描述'

这里我们再新创建一个新的文件,过程之前已经演示过了这里直接跳过,进行删除演示

(3)Git的分支操作

使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。
master作为默认分支,不去改动;在版本控制过程中,同时推进多个任务,为每个任务创建一个单独分支。每个程序员在自己的分支里写代码,开发完成后提交。

分支的好处

  • 同时并行推进多个功能开发,提高开发效率。
  • 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。 失败的分支删除重新开始即可。

分支的操作

命令名称 作用
git branch -v 查看分支
git branch 分支名 创建分支
git checkout 分支名 切换分支
git merge 分支名 把指定的分支合并到当前分支上

分支的命令使用

  • 先创建一个分支
bash 复制代码
# 查看分支
git branch -v

# 创建分支
git branch 分支名

分支后续的修改跟之前的一样的,但是分支修改之后id的版本发生了改变

  • 切换分支
bash 复制代码
git checkout 分支名
  • 合并分支
bash 复制代码
git merge 分支名

如果 master 或 system 分支只有一个分支修改过,则合并不会出现冲突;如果两个分支
都各自修改过同一份文件,则合并会出现冲突。

冲突

我这里没有进行修改所以不会有冲突
这是有冲突的情况

  • 冲突产生的原因:

合并分支时,两个分支在 同一个文件的同一个位置 有两套完全不同的修改。 Git 无法替
我们决定使用哪一个。必须 手工解决 新代码内容。

  • 解决冲突方法:

编辑有冲突的文件;添加到暂存区;执行提交

  • 如何避免冲突
  1. 各人维护各人的代码分支,要避免多个人在各自分支上修改同一个文件。
  2. 避免在 master 分支上写代码。
    在一个项目中,配置类和工具类是可能被多人多个子模块共享的,都修改的话,怎么避
    免冲突?
  • 回答:尽量由一个人进行统一的维护。修改好后,其他人来更新即可。
相关推荐
一个学Java小白1 小时前
git 如何免密提交之 基于 Gitee 的 SSH 配置教程
git
数智工坊1 小时前
【RL理论奠基】时序差分学习的奠基之作:从预测问题到TD(λ)家族的完整理论
论文阅读·人工智能·深度学习·学习·transformer·迁移学习
我是谁??1 小时前
ubuntu22.04在线安装docker和nvidia-container-toolkit
git·docker·github
HalvmånEver1 小时前
MySQL 使用 C 语言连接
linux·数据库·学习·mysql
Kessity1 小时前
Git标签管理
git
南境十里·墨染春水1 小时前
linux学习进展 libevent
linux·运维·学习
Aision_6 小时前
从工具调用到 MCP、Skill完整学习记录
java·python·gpt·学习·langchain·prompt·agi
剑飞的编程思维6 小时前
真实学习本质-坚持思考的人
学习
AI浩6 小时前
学习嵌入位置:面向小目标检测查询检索的噪声感知位置编码
人工智能·学习·目标检测