Git 详细教程

news2024/11/26 22:31:20

目录

  • 1.简介:
  • 2.安装Git
  • 3.Git 如何工作
    • 状态
    • 区域
  • 4.使用Git
  • 5.Git配置
    • 5.1 创建仓库 - repository
    • 5.2 配置
      • 5.2.1 --global
      • 5.2.2 检查配置
  • 6. 查看工作区的文件状态
    • 6.1什么是工作区
    • 6.2 如果显示乱码的解决方式
  • 7.在工作区添加单个文件
  • 8. 添加工作区文件到暂存区
  • 9. 创建版本
  • 10. 查看提交日志
  • 11. 修改默认编辑器
  • 12. 删除
  • 13. 撤销重置
  • 14. 回退版本
  • 15. 比较
  • 16. 分支
    • 16.1 查看分支
    • 16.2 创建分支
    • 16.3 切换分支
    • 16.4 分支合并
    • 16.5 删除分支
    • 16.6 合并记录
    • 16.7 rebase 操作
    • 16.8 合并冲突
  • 17 标签
  • 总结

1.简介:

Git是目前世界上最先进的分布式版本控制系统,在处理各种项目时都十分高效,而且非常的高大上。

Git分布式版本控制系统,它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。


2.安装Git

  • 可以前往Git官网安装Git
  • 按照默认程序安装即可
  • 安装完成后,打开Git bash软件,弹出一个类似cmd的命令行窗口,证明安装成功。
    在这里插入图片描述

3.Git 如何工作

首先,要了解两个概念

  • 状态
  • 区域

状态

git提供了三种(也可以说是四种)不同的记录状态
	已修改(modified)
	已暂存(staged)
	已提交(committed)
有一个特殊的状态
	未追踪(Untracked)

区域

git 提供了三个不同的工作区,用来存放不同的内容
	工作目录
	暂存区域
	Git 仓库

在这里插入图片描述

4.使用Git

  • 首先创建一个新的文件夹
    在这里插入图片描述
  • 选中文件夹路径并输入cmd进入
  • 在这里面输入相关的git指令操作git
    在这里插入图片描述
  • git工作流程
    在这里插入图片描述

5.Git配置

5.1 创建仓库 - repository

  • 进入刚打开的空文件的黑窗口输入git init初始化仓库
git init
  • 该命令将创建一个名为 .git 的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件,这个目录也是上面我们说的三个区域之一,这个目录也是 Git 保存数据记录的地方,非常重要,如非必要,不要轻易改动
  • 当一个项目被 Git 初始化以后,只是表示我们希望通过 Git 来管理当前的这个项目文件的不同时期版本记录,但是这个时候项目中已存在的文件,或者以后新增的文件都是没有进入版本控制管理的,它们是 未追踪(Untracked) 的状态

5.2 配置

  • 当安装完 Git 应该做的第一件事就是设置你的用户名称邮件地址。 这样做很重要,因为每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改

      git config user.name "你的姓名"
      git config user.email "你的邮箱"
    

5.2.1 --global

  • 通过 --global 选项可以设置全局配置信息

      git config --global user.name "你的姓名"
      git config --global user.email "你的邮箱"
    

5.2.2 检查配置

# 打印所有config
git config --list
# 打印指定config
git config user.name

6. 查看工作区的文件状态

git status
该指令就是查看工作区的文件状态

6.1什么是工作区

  • 当前的文件夹即为现在的工作区
  • 在这里插入图片描述

6.2 如果显示乱码的解决方式

1. git status 显示乱码

git config --global core.quotepath false

终端乱码

进入windoes的cmd 然后分别输入以下五行
git config --global core.quotepath false
git config --global gui.encoding utf-8
git config --global i18n.commit.encoding utf-8
git config --global i18n.logoutputencoding utf-8
set LESSCHARSET=utf-8

7.在工作区添加单个文件

  • cd .> 文件名

      cd  .> 1.txt
      这样就能在工作区添加一个名为1.txt的文件
      打开文件直接文件名加后缀即可
      1.txt  即可打开文件
    

8. 添加工作区文件到暂存区

  • git add
    git add 1.txt
    # 添加多个文件
    git add 2.txt 3.txt
    # 添加整个目录
    git add ./a
    # 添加多个目录
    git add ./b ./c
    # 添加所有文件
    git add .
    
  • 未提交状态
    在这里插入图片描述
  • 提交状态
    在这里插入图片描述

9. 创建版本

  • git commit
将暂存区里的改动给提交到本地 git 仓库,也就是为这次工作
(一般会把某个具有特定意义的工作作为一个版本,它可以是多个文件的变化)
每次提交同时会生成一个 40 位的哈希值,作为该次提交版本的唯一 id
每次提交都需要填写备注信息
git commit
# 会调用默认(或自定义)的文本编辑器

这样即为成功
在这里插入图片描述
退出为:
先按esc键,然后输入::wq即可

单行备注
git commit -m 备注信息

这样即为成功在这里插入图片描述

修复提交
git commit --amend -m 提交
修复(替换上一次)提交,在不增加一个新的提交版本的情况下将新修改的代码追加到前一次的提交中

10. 查看提交日志

  • git log
// 完整格式
git log
// 简要格式(单行)
git log --oneline

这样即为成功
在这里插入图片描述

commit dbdeb5f6c7ea0e33497f1a906ffca2e60a12acd9 (HEAD -> master)这行是你提交时生成的秘钥回退版本时能用到

11. 修改默认编辑器

  • 这个指令即为修改常用编辑器
git config core.editor 你常用的编辑器名字

打开一个vue文件如果弹出编辑器即为成功

12. 删除

  • git rm
# 从 git 仓库与工作区中删除指定文件
git rm 文件

# 只删除 git 仓库中的文件
git rm --cached 文件

# rm 以后,需要 commit 这次操作,否则 rm 将保留在暂存区
git commit -m 修正

删除状态:
在这里插入图片描述
修正状态:
在这里插入图片描述

13. 撤销重置

  • git reset
从暂存区中撤销到工作区
// 从暂存区中撤销一个指定文件
git reset HEAD 文件名称
// 从暂存区撤销所有文件
git reset HEAD .

撤销状态
在这里插入图片描述

14. 回退版本

# 回退到指定的 commitID 版本
git reset --hard commitID
commitID为你保存到仓库里面的秘钥

回退状态
在这里插入图片描述

15. 比较

# 比较 工作区和暂存区
git diff 文件 
# 比较 暂存区和仓库
git diff --cached [commitId] 文件
# 比较 工作区和仓库
git diff commitId filename
# 比较 仓库不同版本
git diff commitId1 commitId2

16. 分支

我们的开发就像是游戏的任务,默认是在主线(master)上进行开发的。
许多时候,还有各种支线任务,git 支持我们创建分支来进行项目开发

16.1 查看分支

git branch

16.2 创建分支

git branch 分支名称

16.3 切换分支

git checkout 分支名称
# 也可以使用 checkout -b 来新建分支
git checkout -b 分支名称

分支状态
在这里插入图片描述

16.4 分支合并

# B 合并到 A,需要切换到 A 分支
git merge 被合并分支

# 查看已经合并的分支
git branch --merged
# 查看未合并的分支
git branch --no-merged

16.5 删除分支

# 如果分支为未合并状态,则不允许删除
git branch -d 分支名称
# 强制删除
git branch -D 分支名称

分支状态
在这里插入图片描述

16.6 合并记录

  • rebase
# 合并 HEAD 前两个祖先记录
git rebase -i HEAD~2

~ 与 ^

~ : 纵向

^ : 横向
请添加图片描述

16.7 rebase 操作

# p, pick = use commit => 使用
# r, reword = use commit, but edit the commit message => 使用,但重新编辑说明
# e, edit = use commit, but stop for amending => 使用
# s, squash = use commit, but meld into previous commit => 使用,但合并上一次
# f, fixup = like "squash", but discard this commit's log message => 就像 squash 那样,但会抛弃这个 Commit 的 Commit message
# x, exec = run command (the rest of the line) using shell => 执行脚本
# d, drop = remove commit => 移除
git rebase -i HEAD~3
# 弹出编辑器,根据需要的进行修改,然后保存
# 如果为 r,s 则会再次弹出编辑器,修改新的 commit message,修改之后保存

如果出现一些问题,可以通过 git rebase --edit-todogit rebase --continue 进行重新编辑保存

16.8 合并冲突

有的时候,不同的分支可能会对同一个文件内容和位置上进行操作,这样在合并的过程中就会产生冲突

  • 查看冲突文件
  • 修复冲突内容
  • 提交

合并冲突请添加图片描述
请添加图片描述
请添加图片描述

17 标签

有的时候,我们希望给某一个特定的历史提交打上一些标签

  • 新建tag
git tag -a v1.0.0 HEAD/commitId
  • 查看tag
git tag

输入完成按完回车键会弹出下图即为成功
在这里插入图片描述

总结

以上就是Git本地仓库的讲解及常用指令的具体使用和效果展示以后也会推出远程仓库的讲解和使用方法。希望本篇文章能够帮助到你,不懂得可以评论区或者私信问我,我也会一 一解答。谢谢观看!
我的其他文章:https://blog.csdn.net/m0_60970928?type=blog

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/364815.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构与算法(二)(Python版)

数据结构与算法(一)(Python版) 文章目录递归动规初识递归:数列求和递归三定律递归的应用:任意进制转换递归的应用:斐波那契数列递归调用的实现分治策略与递归优化问题和贪心策略找零兑换问题贪心…

RocketMQ-基本概念

主题(Topic) Apache RocketMQ 中消息传输和存储的顶层容器,用于标识同一类业务逻辑的消息。主题通过TopicName来做唯一标识和区分。 主题的作用主要如下: 定义数据的分类隔离: 在 Apache RocketMQ 的方案设计中&…

挚文集团短期内不适合投资,长期内看好

来源:猛兽财经 作者:猛兽财经 挚文集团(MOMO)在新闻稿中称自己是“中国在线社交和娱乐领域的领军企业”。 该公司旗下的陌陌是中国“陌生人社交网络”移动应用类别的领导者,并在2022年9月拥有超过1亿的月活跃用户。探…

Eotalk Vol.03:结合 API DaaS,让使用数据更方便

Eotalk 是由 Eolink CEO 刘昊臻发起的泛技术聊天活动,每期都会邀请一些技术圈内的大牛聊聊天,聊些关于技术、创业工作、投融资等热点话题。 Eotalk 的第 3 期,很高兴邀请到 Tapdata CEO TJ 唐建法,TJ 可以说是一位超级大咖&#x…

ESP32-C3 BLE5.0 扩展蓝牙名称长度的流程

蓝牙设备名称长度受限于蓝牙广播数据包的长度,如果广播数据包的长度不能包含完整的设备名称,则只显示短名称,其余不能容纳的部分将被截断。ESP32-C3 支持 BLE5.0,最大广播包长支持 1650 字节,可通过 esp_ble_gap_confi…

Windows下SecureCRT的下载、安装、使用、配置【Telnet/ssh/Serial】

目录 一、概述 二、SecureCRT的下载、安装 三、SecureCRT的使用  👉3.1 使用SSH协议连接Linux开发主机  👉3.2 使用Serial(串口)协议连接嵌入式开发板  👉3.3 使用Telnet协议连接嵌入式开发板 四、SecureCRT配置会话选项  🎨4…

将Nginx 核心知识点扒了个底朝天(九)

Nginx 如何实现后端服务的健康检查? 方式一,利用 nginx 自带模块 ngx_http_proxy_module 和 ngx_http_upstream_module 对后端节点做健康检查。 方式二(推荐),利用 nginx_upstream_check_module 模块对后端节点做健康检查。 Nginx 如何开启…

Homekit智能家居DIY一智能通断开关

智能通断器,也叫开关模块,可以非常方便地接入家中原有开关、插座、灯具、电器的线路中,通过手机App或者语音即可控制电路通断,轻松实现原有家居设备的智能化改造。 随着智能家居概念的普及,越来越多的人想将自己的家改…

SQL零基础入门学习(五)

SQL零基础入门学习(五) SQL零基础入门学习(四) SQL SELECT TOP, LIMIT, ROWNUM 子句 ####SQL SELECT TOP 子句 SELECT TOP 子句用于规定要返回的记录的数目。 SELECT TOP 子句对于拥有数千条记录的大型表来说,是非…

如何使用DevEco Studio创建Native C++应用

简介本篇主要介绍如何使用DevEco Studio for OpenAtom OpenHarmony (以下简称“OpenHarmony”)创建一个Native C应用。应用采用“Native C”模板,实现了通过Node-API调用C标准库的功能。本示例通过调用C标准库接口来演示调用过程,…

【macos游戏】RimWorld人工智能说书人控制的科幻殖民地模拟器

原文来源于黑果魏叔官网,转载需注明出处。由人工智能说书人控制的科幻殖民地模拟器。RimWorld控制了一艘太空客轮坠毁的三名幸存者,该飞船在所探索的空间边缘建造了一个殖民地。这款游戏的灵感来源是萤火虫太空西部的精神、对矮人堡垒的深入研究以及史诗…

Python数值方法及数据可视化

随机数和蒙特卡洛模拟求解单一变量非线性方程求解线性系统方程函数的数学积分常微分方程的数值解 等势线绘图和曲线: 等势线 import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3Dx_vals np.linspace(-5,5,20) y_vals …

我们接下来来讲解一下spring的spi机制

大家这俩可能会想到说spring的spi的应用场景,别着急我们慢慢来说,首先来说一个我们熟知的SpringBoot的自动装配是如何实现的?基本上,你一说是基于spring的SPI扩展机制,再把spring.factories文件和EnableAutoConfigurat…

Mysql——主从复制与读写分离

1.什么是主从复制 主从复制:是一种数据备份的方案。 一般来说,是使用两个或两个以上相同的数据库,将一个数据库当做主数据库,另一个数据库当做从数据库。在主数据库中进行相应操作时,从数据库记录下所有主数据库的操…

Hive学习——分桶抽样、侧视图与炸裂函数搭配、hive实现WordCount

目录 一、分桶抽样 1.抽取表中10%的数据 2.抽取表中30%的数据 3.取第一行 4.取第10行 5.数据块抽样 6.tablesample详解 二、UDTF——表生成函数 1.explode()——炸裂函数 2.posexpolde()——只能对array进行炸裂 3.inline()——炸裂结构体数组 三、UDTF与侧视图的搭…

【持续学习】清华最新持续学习综述

为了应对现实世界的动态变化,智能体需要在其生命周期中增量地获取、更新、积累和利用知识。这种能力被称为持续学习,为人工智能系统自适应发展提供了基础。本文来自于https://arxiv.org/abs/2302.00487在一般意义上,持续学习明显受到灾难性遗…

DO-254 和 DO-178B的区别(文末有易灵思核心板及配套下载线)

DO-178B介绍 DO-178B,机载系统和设备认证中的软件考虑,在电子硬件被要求符合 DO-254 之前多年就已发布和采纳。DO-178B 的先行一步对电子硬件开发带来两个特别的后果。首先,使得硬件制造商有了一种倾向,为了避免 DO-178B 对软件开…

OSI模型和网络协议简介

文章目录一、OSI七层模型1.1什么是OSI七层模型?1.2这个网络模型究竟是干什么呢?二、TCP/IP协议三、常见协议四、物联网通信协议以及MQTT4.1 物联网七大通信协议4.2 MQTT特性一、OSI七层模型 1.1什么是OSI七层模型? 我们需要了解互联网的本质…

unity实现2D小游戏FlappyBird-2D

unity实现2D小游戏FlappyBird-2D 一、游戏介绍(unity工程文件资源包链接) https://download.csdn.net/download/weixin_48388330/87483337 实现预加载动画,UI界面展示,空格键或鼠标左键可控制Bird的高度,从而通过障…

关于医疗场所电源配置及变配电系统设计与应用分析

摘要:针对不同医疗场所,结合医疗负荷分级,从维持供电时间和恢复供电时间的角度分析相应的电源配置和配电措施,以构建适合医疗场所的可靠供配电系统。 关键词:医疗场所;电源配置;安全电源&#…