实习前自我培训-Day2学习

Day2学习-Git实操

什么是git?

了解git

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

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

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

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

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

Git的安装与使用

Git安装

官方网址Git

点击下载:

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

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

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

Git使用

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

  • 配置名字
bash 复制代码
git config --global user.name "Name"
  • 配置邮箱
bash 复制代码
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里面不能使用复制粘贴快捷键,复制需要左键拖动,粘贴使用鼠标中键即可

查看文件状态

bash 复制代码
git status
  • 文件状态

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

    • 绿色:git add

    • 白色:git commit

创建项目文件夹

创建工作区

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

创建文件

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

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

bash 复制代码
#创建文件的常用指令

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

初始化本地仓库

bash 复制代码
git init

添加文件

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

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

git add的使用方法

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

    • 特定文件
    bash 复制代码
    git reset HEAD filename
    • 所有文件
    bash 复制代码
    git reset HEAD -- .

提交文件到本地

  • 提交代码
bash 复制代码
git commit -m "message"
  • 将暂存区所有文件提交到本地仓库,后面的""里面的东西是你对你这次提交的一个说明,可以输入任意内容,但是最好写更改了什么,方便自己看提交记录时不会蒙
  • 白色框框就是提交时的留言,前面可以理解为操作的ID,这个ID在我们需要回退版本的时候要用,下面一行显示改变了多少文件,后面的±表示相较于之前是更改了还是删除了

  • 撤销提交

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

修改操作

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

查看提交记录

  • 此指令可以查看所有东西
bash 复制代码
#指令
git log 
  • 加上--pretty=oneline可以使结果输出为一行
  • 高度自定义输出
bash 复制代码
git log --pretty=format:"%h -%an,%ar:%s"
  • %h--------------简化哈希

    %an------------作者名字

    %ar------------修订日期,多久以前

    %ad-----------修订日期

    %s-------------提交说明

    %H------------提交的完整哈希值

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

bash 复制代码
 git log --graph

版本回退

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

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

bash 复制代码
git reflog

分支的使用

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

  • 创建本地分支

bash 复制代码
git branch 分支名
  • 切换分支
bash 复制代码
git checkout 分支名
  • 新建一个分支并切换到那个分支
bash 复制代码
git checkout -b 分支名
  • 合并分支

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

暂存区的使用

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

Git的远程使用

托管服务

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

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

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

关联远程仓库

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

SSH的配置

  • 生成SSH公钥
bash 复制代码
ssh-keygen -t rsa

输入后按三下空格确认

  • 显示生成的公钥内容
bash 复制代码
cat ~/.ssh/id_rsa.pub
  • 测试是否成功
bash 复制代码
ssh -T git@gitee.com

推送代码到远程仓库

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

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

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

merge和rebase的区别

维度 Merge (合并) Rebase (变基)
历史结构 非线性,保留分叉与合并节点 完全线性,一条直线,无多余节点
提交 Hash 原始提交保持不变 生成全新 Hash,重写提交历史
冲突解决 一次性解决所有冲突 逐个提交解决,可能多次处理同一文件
安全性 极高,不修改已有提交,适合公共分支 有风险,改写历史,严禁用于已推送的公共分支
适用场景 公共分支集成、保留真实协作脉络 本地功能分支整理、PR 前清理提交、同步上游代码
相关推荐
小宋加油啊9 小时前
学习机械臂相关知识
学习
十月的皮皮12 小时前
C语言学习笔记20260606- 求月份天数三种写法
c语言·笔记·学习
马士兵教育13 小时前
Java还有前景吗?Java+AI大模型学习路线及项目?
java·人工智能·python·学习·机器学习
lizhihai_9914 小时前
股市学习心得-AI 产业链核心标的梳理清单
大数据·服务器·人工智能·科技·学习
吃好睡好便好14 小时前
说说科学爬山
学习·生活
lunzi_082615 小时前
【学习笔记】《Python编程 从入门到实践》第8章:函数定义、参数传递与模块导入
笔记·python·学习
零陵上将军_xdr16 小时前
后端转全栈学习-Day5-JavaScript 基础-3
开发语言·javascript·学习
05大叔16 小时前
对话系统学习,问答型数据库,闲聊型对话数据库
学习
nashane16 小时前
HarmonyOS 6商城开发学习:抢票倒计时与系统日历提醒——票务类场景的完整落地思路
学习·华为·harmonyos