Day2学习-Git实操

git图片 的图像结果

什么是git?

了解git

  • Git是一个免费的,开源的分布式版本控制系统

  • 版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统

什么是集中式和分布式版本控制工具

  • 集中式版本控制工具: 如CVS,SVN等都有一个单一的几种管理服务器,保存所有文件的修订版本,而协同工作的人通过客户端连接到这台服务器,从而取出最新的文件或者提交更新。缺点:中央服务器的单点故障;多(程序员)对一(中央服务器)

  • 分布式版本控制工具: 如git,客户端取的不是最新的文件快照,而是把代码仓库完整的镜像下来到本地库(克隆/备份)

Git的安装与使用

Git安装

官方网址Git

点击下载:

3148671520537307fe6125d646157dcf

找到对应电脑系统的网址:

96a4855fb0daf16ed470113429ea54e0

下载好之后,直接点击exe文件,进行配置选择,基本上一直选择下一步即可:

e5d831d8e85ba3f287a594945beffb8b

选择第一个就可以足够使用:

755c9ad6b599bec6fa2ed9bb0bb4d8c3

Git使用

安装完成后首先进入bash配置自己的名字和邮箱

  • 配置名字
git config --global user.name "Name"
  • 配置邮箱
git config --global user.email your_email

global表示全局配置的意思,如果需要在单独的项目中配置,不需要添加global

Git的工作原理

  • 主要流程:新建一个项目后自动新建了main/master分支,这个时候我们新建一个develop分支用来作为主开发的分支,然后不同小组新建各自的feature分支来开发各自的功能,开发完后向develop主开发分支提交合并请求,develop分支对其进行验证,找不到bug后新建一个release分支作为测试服,在进行长时间验证,发现错误就打回develop进行修复,发现很稳定后就向主项目main/master合并,并生成版本号

  • main/master 分支是项目的核心分支,只接受hotfixes(热修复,紧急修复 )和release(预发布版本)的分支合并 ,通常具有版本号,可以称为正式版

  • release 分支是develop分支拿来验证的分支,就是所谓的测试版

  • develop 分支是开发分支,也是长期存在的核心分支,主要功能是收集各种feature分支,对他们进行测试和验证

  • feature 分支是各种新功能的开发分支,可以同时开很多条分支,同时开发减少时间成本

  • 版本号的说明:1.主版本:主要功能变化或者重大更新
    2.次版本:添加一些新功能,改进旧功能
    3.小版本:修复一些bug,打一些补丁

Git的本地使用

  • 需要切换为英文输入法

  • git bash里面不能使用复制粘贴快捷键,复制需要左键拖动,粘贴使用鼠标中键即可

查看文件状态

git status
  • 文件状态

    • 红色:修改,创建,删除

    • 绿色:git add

    • 白色:git commit

创建项目文件夹

创建工作区

  • 新建一个文件夹Test,右键选择open git bash here,进入bash界面

创建文件

  • 第一种:在文件夹中直接创建

  • 第二种:在bash界面中输入命令创建

#创建文件的常用指令

touch 文件名.后缀  #创建单个空文件
mkdir 目录名 #创建单个空目录
mkdir -p 目录1/目录2/目录三  #创建多级目录

初始化本地仓库

git init

在这里插入图片描述

添加文件

git add text.txt
  • 此命令用于将文件添加到暂存区等待操作

  • 一个文件如果没有通过add添加,就是未被跟踪的,如果添加了,它会一辈子被git跟踪或管理,添加后显示绿色

在这里插入图片描述

git add的使用方法

  • 单独添加某个文件
git add <file>
  • 添加此工作区所有文件
git add .
  • 如果让文件取消被跟踪
git rm filename
  • 保留目录但不被跟踪
git --cache filename
  • 依旧跟踪,但被放到了暂存区,如何取回

    • 特定文件
    git reset HEAD filename
    
    • 所有文件
    git reset HEAD -- .
    

提交文件到本地

  • 提交代码
git commit -m "message"
  • 将暂存区所有文件提交到本地仓库,后面的""里面的东西是你对你这次提交的一个说明,可以输入任意内容,但是最好写更改了什么,方便自己看提交记录时不会蒙

在这里插入图片描述

  • 白色框框就是提交时的留言,前面可以理解为操作的ID,这个ID在我们需要回退版本的时候要用,下面一行显示改变了多少文件,后面的±表示相较于之前是更改了还是删除了

  • 撤销提交

git reset head~--soft
  • 这个指令可以撤销我们的提交,但是不能撤销第一次提交,其他的都可以
    这样撤销后文件会有暂存状态
    不加soft则没有暂存状态
    head是当前提交
    ~上次提交
    ~2倒数第二次提交
    --hard不只是取消提交,之前的修改也全部取消了彻底回到上一次提交的状态(慎用,会数据丢失)

修改操作

  • 已经commit的文件,如果被改动了,就相当于从暂存区又重新放回了工作区,需要重新添加到暂存区(git add)和提交(git commit)

查看提交记录

  • 此指令可以查看所有东西
#指令
git log 

在这里插入图片描述

  • 加上–pretty=oneline可以使结果输出为一行

在这里插入图片描述

  • 高度自定义输出
git log --pretty=format:"%h -%an,%ar:%s"

在这里插入图片描述

  • %h--------------简化哈希
    %an------------作者名字
    %ar------------修订日期,多久以前
    %ad-----------修订日期
    %s-------------提交说明
    %H------------提交的完整哈希值

  • –graph使输出图像化,在分支多的情况下很好用,基本使用不影响

 git log --graph

版本回退

git reset --hard 版本号
  • 先使用git log获取版本号,再用上方命令将版本进行回退

  • 如果想撤销版本的回退,可以使用下方命令获取版本ID

git reflog

分支的使用

  • 查看本地分支
git branch
//还有其他的写法
git branch --list
  • git log也可以查看当前分支

  • 创建本地分支

git branch 分支名
  • 切换分支
git checkout 分支名
  • 新建一个分支并切换到那个分支
git checkout -b 分支名
  • 合并分支

    • 注意:是将所填的分支名称合并到当前的分支
git merge 分支名称
  • 删除分支
git branch -d 分支名
git branch -D 分支名 (强制删除)

暂存区的使用

  • 如果在当前分支写代码写到一半,突然需要去另一个分支修复bug等问题,可以使用如下命令储藏我们所写的代码
git stash 
# 储藏我们写到一半的代码
  • 改完bug后,拿回我们的代码
git stash apply
  • 也可以存储多次,可以用如下命令来查看储藏了几次
git stash list
  • 如何拿回特定的储藏的代码
git stash apply stash@{0}
  • 删除特定的stash
git stash drop stash@{0}

Git的远程使用

托管服务

  • 代码托管服务是一种在线平台,核心功能是存储和管理代码,并提供团队协作和版本控制工具,让开发者可以追踪代码修改、多人协作开发并且避免冲突。

  • 主流的托管服务平台有GitHub、Gitee、GitLab等等。

  • GitHub是全世界最大的开源代码托管平台,其基于 Git 这个强大的版本控制系统,不仅能存放代码,更是全球开发者的交流、学习、共建项目的核心阵地

关联远程仓库

git remote add 远端名称 仓库路径
# 远程仓库名是你要给远程仓库取的名字
# 仓库路径可以选择https或者ssh,直接复制在后面就可以
# 查看远程仓库名是否建好
git remote 
# 如果命名错误,可以用下面的指令更改,前面是之前的,后面是改正后的
git remote 错误名 改正名
# 如果想要删除远程仓库别名,也可以用下面的指令
git remote rm 

SSH的配置

  • 生成SSH公钥
ssh-keygen -t rsa

输入后按三下空格确认

在这里插入图片描述

  • 显示生成的公钥内容
cat ~/.ssh/id_rsa.pub

在这里插入图片描述

  • 测试是否成功
ssh -T git@gitee.com

在这里插入图片描述

推送代码到远程仓库

  • 把本地分支推送到远程仓库的默认分支,空仓库使用main
git push 仓库别名/仓库地址 本地分支名 : 远程分支名
# -f 表示强制覆盖远程的历史提交
# -u/--set-upstrea 推送到远程并同时建立起和远端的联系
# 意思是以后再推送同样的分支只用写 git push 就可以
# 后面的远程分支名可以不写,默认如果没有就新建

拉取和抓取代码到远程仓库

git pull [远程仓库别名] [远程分支名][本地分支名]
# 感觉 git pull = git fetch + git merge
# 本地分支名不写就是默认当前分支
# 解读:将远程仓库的远程分支和本地分支合并

merge和rebase的区别

维度 Merge (合并) Rebase (变基)
历史结构 非线性,保留分叉与合并节点 完全线性,一条直线,无多余节点
提交 Hash 原始提交保持不变 生成全新 Hash,重写提交历史
冲突解决 一次性解决所有冲突 逐个提交解决,可能多次处理同一文件
安全性 极高,不修改已有提交,适合公共分支 有风险,改写历史,严禁用于已推送的公共分支
适用场景 公共分支集成、保留真实协作脉络 本地功能分支整理、PR 前清理提交、同步上游代码
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐