Git 教程

news2024/11/29 10:34:11

目录

  • 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/363894.html

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

相关文章

Docker启动RabbitMQ,实现生产者与消费者

目录 一、Docker拉取镜像并启动RabbitMQ 二、Hello World (一)依赖导入 (二)消息生产者 (三)消息消费者 三、实现轮训分发消息 (一)抽取工具类 (二)启…

网络安全——数链路层据安全协议

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.数据链路层安全协议简介 1.数据链路安全性 二.局域网数据链路层协议 1.…

git应用笔记(三)

在新增虚拟机linux的基础上,做git的下载与提交 1、初始化自己的用户名和邮箱。 git config --global user.name “输入你的用户名” git config --global user.email “输入你的邮箱” 2、将本地公钥及配置如图1复制粘贴到虚拟机当前用户.ssh\目录下 4929a0205f43…

面渣逆袭:分布式十二问,万字图文详解

大家好,我是老三,不管今年金三银四如何,面渣逆袭系列继续,这期我们来看看分布式。 分布式理论 1. 说说CAP原则? CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性…

硬件学习 软件Cadence day07 PCB 底板电路图布线

1.根据原理图的元器件, 选择在 PCB 芯片制作的元器件 (allegro中原理图和pcb中元件的交互) 1.首先完成下列操作 可以尝试先关闭再打开, 等下操作的时候就好 发现新增的发光物体!! 2.完成操作 ,…

Web3中文|香港拟允许比特币交易,瞄准“全球web3中心”

香港再次成为全球加密行业关注的焦点。在美国SEC对于加密货币交易所Kraken、BUSD发行商Paxos以及BA的重磅打击对比下,香港从去年开始持续拥抱Web3的姿态,让投资者开始押注香港。2023年2月20日,香港证监会宣布,就适用于虚拟资产交易…

Linux:基于libevent读写管道代码

基于libevent读写管道代码&#xff1a; 读端&#xff1a; #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <string.h> #include <event2/event.h> #include…

gdb的简单练习

题目来自《ctf安全竞赛入门》1.用vim写代码vim gdb.c#include "stdio.h" #include "stdlib.h" void main() {int i 100;int j 101;if (i j){printf("bingooooooooo.");system("/bin/sh");}elseprintf("error............&quo…

Python 算法交易实验48 表字段设计

说明 虽然说的是表&#xff0c;实际上用的是Mongo集合 基于ADBS(APIFunc DataBase Service)可以构造一个供后续研究、生产长时间使用的数据基础&#xff0c;这个基础包括了&#xff1a; 1 队列服务。通过队列&#xff0c;数据可以通过API实现零担和批量两种模式的快速存储。2 …

ideal创建maven项目

前置工作本机安装mavenIdea 设置使用本机maven 工具Settings--->Maven开始创建maven项目创建maven项目&#xff0c;勾选通过模板创建&#xff0c;选择 maven-archetype-webapp 模板GroupId: 公司名倒序ArtifactId: 项目名设置本地maven仓库配置项目文件显示名&#xff0c;和…

外卖点餐小程序开发

前言 餐饮行业是一个传统的行业。根据当前发展现状,网络信息时代的全面普及,餐饮行业也在发生着变化,单就点餐这一方面,利用手机点单正在逐步进入人们的生活。传统的点餐方式,不仅会耗费大量的人力、时间,有时候还会出错。小程序系统伴随智能手机为我们提供了新的方向。 手机…

如何使用码匠连接 MySQL

目录 在码匠中集成 MySQL 在码匠中使用 MySQL 关于码匠 目前码匠已经实现了与 MySQL 数据源的连接&#xff0c;支持书写 SQL 语句&#xff0c;也支持通过图形化界面对数据进行增、删、改、查&#xff0c; 同时还支持将数据绑定至各种组件&#xff0c;并通过简单的代码实现数据…

Collecting package metadata (current_repodata.json): failed

一、问题描述 安装anaconda之后&#xff0c;想创建环境&#xff0c;用了下面这段代码&#xff1a; conda create -n pytorch python3.7 conda创建环境报错了&#xff0c;报了如下这一堆&#xff1a; Collecting package metadata (current_repodata.json): failedUnavailab…

echart中x轴数据过多时展示不全

项目中遇到需要展示一些柱状图&#xff0c;之前做相关功能时&#xff0c;横坐标x轴一直用的是时间&#xff0c;所以没有注意到这个问题。 如下图所示&#xff1a; 当x轴显示的是”人名“这种类型的值的时候&#xff0c;这种显示情况就有问题了&#xff0c;这样就不会知道&…

python学习笔记之例题篇NO.3

获得用户输入的一个整数N&#xff0c;输出N中所出现不同数字的和。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬ s list(set(list(input())))# ① r…

全局组件和局部组件

全局组件第一种定义方法&#xff1a;A、创建自己的组件&#xff1a;Loading.vueB、在main.js文件中引入组件并注册import Vue from vue import App from ./App.vue import * as filters from ./filterimport quanjuzujian from ./components/quanjuzujian.vueVue.component(qua…

carla0.9.13-UE4添加4轮车模型(Linux系统)

前期准备建模工具&#xff1a;blender:v3.4.1&#xff1b;可以在Ubuntu Software商店直接下载虚拟引擎&#xff1a;carla-UE4 (carla v0.9.13)&#xff0c;无需额外安装UE4&#xff0c;carla中自带插件编译carla参照官方文档&#xff1a;https://carla.readthedocs.io/en/0.9.1…

mysql存储引擎、事务、索引

目录MySQL进阶存储引擎什么是存储引擎常用存储引擎事务什么是事务怎么理解提交事务 和回滚事务事务特性事务的隔离级别索引什么是索引索引的实现原理什么条件下&#xff0c;我们会考虑给字段添加索引呢?什么条件下&#xff0c;索引会失效&#xff1f;索引分类MySQL进阶 存储引…

Scala的变量声明

文章目录变量声明&#xff08;一&#xff09;简单说明&#xff08;二&#xff09;利用val声明变量1&#xff0c;声明方式2&#xff0c;案例演示&#xff08;三&#xff09;利用var声明变量1&#xff0c;声明方式2&#xff0c;案例演示&#xff08;四&#xff09;换行输入语句&a…

横道图时间标尺在P6软件中的设置

卷首语 由于其直观简洁且易于管理的特性&#xff0c;使其成为展示项目活动顺序及时间安排的最常用的进度管理工具。 甘特图 甘特图&#xff08;Gantt Chart&#xff09;&#xff0c;又称为横道图或棒条图&#xff0c;是最早的项目进度管理工具之一。由于其直观简洁且易于管理…