git 的使用方法(上 - 指令)

news/2024/4/19 8:14:38/文章来源:https://blog.csdn.net/weixin_62897746/article/details/129158154

目录

  • 前言:
  • 一、Git 是什么?
  • 二、SVN与Git的最主要的区别?
  • 三、Git 安装
  • 四、git 配置
    • 1. 创建仓库 - repository
    • 2. 配置
    • 3. 工作流与基本操作
  • 五、Git 的使用流程
    • 1. 仓库中创建 1.txt文件
    • 2. 查看工作区的文件状态
    • 3. 添加工作区文件到暂存区
    • 4. 创建版本
    • 5. 查看提交日志
    • 6. 修复提交
    • 7. 删除
    • 8. 撤销重置
    • 9. 比较
    • 10. 分支
    • 11. 标签
  • 六、在使用指令时出现的问题
    • 1. 显示乱码问题
    • 2. 使用 git commit 指令出现以下问题
  • 总结:

前言:

在工作中我们的项目一般都是多人合作完成的,这样就需要用到 git 了,跟随本文来一起学习把!


一、Git 是什么?

Git 是目前世界上最先进的 分布式 版本控制系统。

工作原理 / 流程:

请添加图片描述

  • Workspace:工作区
  • Index / Stage:暂存区
  • Repository:仓库区(或本地仓库)
  • Remote:远程仓库

二、SVN与Git的最主要的区别?

SVN集中式 版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。

Git分布式 版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。


三、Git 安装

Windows 下载地址:https://git-scm.com/download/win

在这里插入图片描述
点击下载后除了下图的步骤外,其他默认进行安装即可

请添加图片描述


四、git 配置

当安装完成后,在需要配置 git 的文件中,使用 cmd 进入 黑窗口,或者右键点击 Git Bash Here 进入配置窗口中。

1. 创建仓库 - repository

进入希望纳入 git 版本控制的项目目录,使用 git init 初始化

git init

该命令将创建一个名为 .git 的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件,这个目录也是上面我们说的三个区域之一,这个目录也是 Git 保存数据记录的地方,非常重要,如非必要,不要轻易改动。

当然我们很多人,是看不到 .git 的子目录的,这和我们电脑的设置有关,根据下图进行调整,就会显示出来了。

在这里插入图片描述


2. 配置

当创建完仓库后,需要设置你的用户名称与邮件地址。 这样做很重要,因为每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改。

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

-- global

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

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

检查配置

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

3. 工作流与基本操作

当一个项目被 Git 初始化以后,只是表示我们希望通过 Git 来管理当前的这个项目文件的不同时期版本记录,但是这个时候项目中已存在的文件,或者以后新增的文件都是没有进入版本控制管理的,它们是 未追踪(Untracked) 的状态。


五、Git 的使用流程

请添加图片描述


1. 仓库中创建 1.txt文件

使用以下指令创建 1.txt 文件:

cd .> 1.txt

在这里插入图片描述


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

使用以下指令查看工作区的文件状态:

git status

在这里插入图片描述

使用 git status 查看状态,红色字体显示在工作区,绿色字体显示在暂存区


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

通过以下指令添加工作区文件到暂存区:

git add 1.txt
// # 添加多个文件
git add 2.txt 3.txt
// # 添加整个目录
git add ./a
// # 添加多个目录
git add ./b ./c
// # 添加所有文件
git add .

在这里插入图片描述


4. 创建版本

使用以下指令,将暂存区里的改动给提交到本地 git 仓库,也就是为这次工作(一般会把某个具有特定意义的工作作为一个版本,它可以是多个文件的变化)

git commit
// # 会调用默认(或自定义)的文本编辑器// 直接在 cmd 中使用,无需打开编辑器
git commit -m "用简洁的语法把 git 仓库中的改动写出来"

在这里插入图片描述

备注信息中不要使用 空格 否则会报错。


5. 查看提交日志

通过以下指令查看提交日志:

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

在这里插入图片描述


6. 修复提交

使用以下指令使用修复(替换上一次)提交,在不增加一个新的提交版本的情况下将新修改的代码追加到前一次的提交中

git commit --amend -m 提交

在这里插入图片描述


7. 删除

通过以下指令可以删除文件:

// # 从 git 仓库与工作区中删除指定文件
git rm 文件// # 只删除 git 仓库中的文件
git rm --cached 文件// # rm 以后,需要 commit 这次操作,否则 rm 将保留在暂存区
git commit -m 修正

在这里插入图片描述


8. 撤销重置

git reset

从暂存区中撤销到工作区

// 从暂存区中撤销一个指定文件
git reset HEAD 文件名称
// 从暂存区中国年撤销所有文件
git reset HEAD .

该命令既可以用于回退版本

// # 回退到指定的 commitID 版本
git reset --hard commitID

在这里插入图片描述


9. 比较

通过以下指令可以进行比较:

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

在这里插入图片描述


10. 分支

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

查看分支

git branch

在这里插入图片描述


创建分支

git branch 分支名称

在这里插入图片描述


切换分支

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

在这里插入图片描述


分支合并

// # B 合并到 A,需要切换到 A 分支
git merge 被合并分支// # 查看已经合并的分支
git branch --merged
// # 查看未合并的分支
git branch --no-merged

在这里插入图片描述


删除分支

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

在这里插入图片描述


合并记录

rebase

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

~ : 纵向

^ : 横向

请添加图片描述


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 进行重新编辑保存


合并冲突

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

  • 查看冲突文件

在这里插入图片描述

  • 修复冲突内容

请添加图片描述

比较变更:

请添加图片描述

  • 提交
git add .

11. 标签

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

新建 tag

git tag -a v1.0.0 HEAD/commitId

查看 tag

git tag

六、在使用指令时出现的问题

1. 显示乱码问题

如果文字显示为乱码执行以下指令:

// 进入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

在这里插入图片描述


2. 使用 git commit 指令出现以下问题

当需要提交文件到本地仓库时,使用 git commit 问题出现以下问题,输入 :wq 后回车解决问题。

在这里插入图片描述


总结:

欢迎大家加入我的社区,在社区中会不定时发布一些精选内容:https://bbs.csdn.net/forums/db95ba6b828b43ababd4ee5e41e8d251?category=10003


以上就是 git 的使用方法(上 - 指令),不懂得也可以在评论区里问我或私聊我询问,以后会持续发布一些新的功能,敬请关注。
我的其他文章:https://blog.csdn.net/weixin_62897746?type=blog

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯:聪明的猴子

题目链接:聪明的猴子https://www.lanqiao.cn/problems/862/learning/ 目录 题目描述 输入描述 输出描述 输入输出样例 运行限制 解题思路: 最小生成树 AC代码(Java): 课后练习: 题目描述 在一个热带雨林中生存…

C++11 条件变量(condition_variable)

一、总述 在C11中,我们可以使用条件变量(condition_variable)实现多个线程间的同步操作;当条件不满足时,相关线程被一直阻塞,直到某种条件出现,这些线程才会被唤醒。 主要成员函数如下&#x…

【java】Spring Cloud --Spring Cloud Alibaba 微服务解决方案

文章目录1、Spring Cloud Alibaba 是什么先说说 Spring CloudSpring Cloud Alibaba和Spring Cloud 的区别和联系Spring Cloud Alibaba2、Spring Cloud Alibaba 包含组件阿里开源组件阿里商业化组件集成 Spring Cloud 组件3、Spring Cloud Alibaba 功能服务注册与发现支持多协议…

教你如何搭建培训机构-学员管理系统,demo可分享

1、简介1.1、案例简介本文将介绍,如何搭建培训机构-学员管理。1.2、应用场景学员信息报表展示所有正式学员信息,可对学员进行分配班级、转课、续课、扩科、退课、阶段测评等操作。2、设置方法2.1、表单搭建1)新建表单【学员】,字段…

和日期相关的代码和bug——一道力扣题中的小发现

目录 Day of the Week 题目大意 常规方法 Python代码 Golang代码 C代码 基姆拉尔森公式 Python代码 Golang代码 C代码 使用库函数 Python代码 Golang代码 C代码 Day of the Week Given a date, return the corresponding day of the week for that date. The inp…

微信协议网页版微信协议解析

最近在做个微信机器人,所以研究了网页版的微信协议及相关接口,在这里简单总结一下。从表面上看,对于网页版微信我们的使用流程是这样的:很简单,只有四步,但如果细化到内里细节的话,上面这简单四…

华为OD机试真题 用 C++ 实现 - 服务依赖

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…

ADC模数转换器(基于STM32F407)

简介 Analog-to-digital converters(模拟数字转换器),我的STM32F407中内置3个ADC,每个 ADC 有 12 位、10 位、8 位和 6 位可选,ADC 具有独立模式、双重模式和三重模式,对于不同 AD 转换要求几乎都有合适的…

mysql高级-day03

mysql高级-day03 集群: 主从模式(高可用 读写分离) 主主模式 主从级联 主主级联半同步模式(理解 表达出来)面试异步模式(理解 表达出来)面试搭建主从 搭建主主(docker)数据分片: 水平 垂直(数据库 表)面试策略有哪些(负载均衡策略)4种读写分离 主从切换 1 Mysql复制架构 1.1…

Linux 文件基本属性

Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。 为了保护系统的安全性,Linux 系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。 在 Linux 中我们通常使用以下两个命…

JAVA虚拟机JVM之内存模型

内存模型 java 内存模型 很多人将【java 内存结构】与【java 内存模型】傻傻分不清,【java 内存模型】是 Java Memory Model(JMM)的意思。 关于它的权威解释,请参考 https://download.oracle.com/otn-pub/jcp/memory_model-1.0…

mysql间隙锁

首先我们这里有一个表t,其中的数据如下图所示 注意哈 update由于操作的最新的值,所以是当前读! 另外一个事务插入 8的时候发生锁 而我对id为10的数据进行更新,却不会被锁住 分析:在执行当前读时,由于id7不存…

斗地主洗牌发牌-课后程序(JAVA基础案例教程-黑马程序员编著-第六章-课后作业)

【案例6-4】 斗地主洗牌发牌 【案例介绍】 1.任务描述 扑克牌游戏“斗地主”,相信许多人都会玩,本案例要求编写一个斗地主的洗牌发牌程序,要求按照斗地主的规则完成洗牌发牌的过程。一副扑克总共有54张牌,牌面由花色和数字组成…

JAVA-JDBC

文章目录1、什么是JDBC?2、JDBC相关的类库在哪里?3、JDBC本质上是一堆什么呢?4、JDBC开发之前的准备工作?5、JDBC编程六步JDBC课堂笔记1、什么是JDBC? Java DataBase Connectivity 在java语言中编写sql语句&#xff0…

ChatGPT是什么?为何会引爆国内算力需求?

过去十年中,通过“深度学习大算力”从而获得训练模型是实现人工智能的主流技术途径。由于深度学习、数据和算力这三个要素都已具备,全世界掀起了“大炼模型”的热潮,也催生了大批人工智能企业。大模型是人工智能的发展趋势和未来大模型&#…

Docker----------day5---安装redis集群

1.哈希取余分区 2亿条记录就是2亿个k,v,我们单机不行必须要分布式多机,假设有3台机器构成一个集群,用户每次读写操作都是根据公式: hash(key) % N个机器台数,计算出哈希值,用来决定数据映射到哪一个节点上。…

浏览器用一行JS代码导出cookies.txt,Python的requests库导入cookies格式化为字典格式

在Python进行爬虫时,如果仅使用requests库打开某个网页,requests的session.cookies保存的cookies信息少得可怜,有时cookies甚至是空白!但浏览器里打开同一个网页,cookies信息非常详尽,比如浏览器的cookies保…

孪生生产线:法兰工厂数据驱动的颠覆性创新

2018 年,世界经济论坛(WEF)携手麦肯锡公司共同倡议并正式启动了全球“灯塔工厂网络项目”(Lighthouse Network),共同遴选率先应用工业革命 4.0 技术实现企业盈利和持续发展的创新者与示范者。这就使得工厂系统需要对各流水线及生产运行成本方面进行多角度…

在DDD中建立领域模型

在前文《当我们谈论DDD时我们在谈论什么》中我们讨论了DDD的战略设计和战术设计。在本文中我们将继续探讨领域模型。 用领域模型表达领域概念 在实际项目中,模型设计者往往过早陷入具体构造块类型的识别,比如实体、聚合、领域服务,而忽略了…

Git(分布式版本控制系统)

提到git了,我们先来说一下什么是git? 1、通俗一点,就是一个人工版本控制器 通过人工的复制行为来保存项目的不同阶段的内容,添加适当的一些描述文字加以区分 繁琐、容易出错 产生大量重复数据 2、什么是版本控制? 版本控制是指对…