Git学习笔记(第3章):Git常用命令

目录

3.1 设置用户签名

3.2 初始化本地库

3.3 查看本地库状态

3.4 添加暂存区

3.5 提交本地库

3.6 历史版本

3.7 修改文件

3.8 版本穿梭

小结


命令

作用

git config --global user.name 用户名

设置用户签名

git config --global user.email 邮箱

设置用户签名

git init

初始化本地库

git status

查看本地库状态

git add 文件名

添加到暂存区

git commit -m “日志信息文件名

提交到本地库

git refloggit log

查看历史版本

git reset –hard 版本号

版本穿梭

3.1 设置用户签名

基本语法

  • git config --global user.name 用户名
  • git config --global user.email 邮箱

案例实操

  • Step1:在桌面或任意位置右键打开Git客户端

  • Step2:设置用户签名(@的前面为当前Windows的登录用户)

  • Step3:验证有效性(查看配置文件)
    • 路径:C:\Users\Bigbeard_Liao\ .gitconfig

几点说明

  • Git首次安装成功后,必须设置一次用户签名,否则无法提交代码。
  • 用户签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。
  • 邮箱为虚拟邮箱,现实中无需真实存在,并且Git也不会验证该邮箱的合法性和真实性。
  • 此处设置的用户签名登录代码托管中心(GitHub)的账号没有任何关系。

3.2 初始化本地库

        若想使用Git管理某个项目,就必须让Git获取该项目目录的管理权限(未进行初始化的项目,Git是无法进行管理的)。

基本语法

  • git init

案例实操

要求:使用Git管理项目git-demo(此项目下不含任何内容,仅用于演示)

  • Step1:鼠标手动点击文件夹,进入项目(Windows路径具有盘符,需要将\修改为/,不便于使用cd命令直接进入)

  • Step2:在当前位置(即项目的根目录下)打开Git客户端

  • Step3:初始化本地库
    • 在项目的根目录下,自动生成.git的文件夹
    • 默认情况下,.git文件夹是隐藏的,需要取消隐藏才能看见
    • .git文件夹不允许修改,否则Git将无法管理该项目

  • Step4:查看.git文件夹
    • 命令:ll 或 ll -a(-a显示所有的内容,包括隐藏文件)

  • 注:在Git Bash中使用的命令,与Linux命令完全相同。

3.3 查看本地库状态

基本语法

  • git status

案例实操

  • Step1首次查看本地库状态(工作区不存在任何文件
    • On branch master:当前本地库位于master分支(默认分支名字)上
    • No commits yet:当前还未提交过任何历史版本
    • nothing to commit (create/copy files and use "git add" to track):当前没有任何东西需要提交

  • Step2:新增文件
    • 新增并编辑文件:vim hello.txt
    • 查看文件(全部内容):cat hello.txt
    • 查看文件(部分内容):tail -n 1 hello.txt(最后一行)

  •  Step3再次查看本地库状态(工作区已经存在文件

  • 文件状态1:Untracked files(未跟踪的文件)
    • 在工作目录(工作区)中有新文件,但尚未被Git跟踪;
    • 这些文件不在Git的版本控制之下,Git并不追踪这些文件的变化;
    • 可使用git add命令将这些文件添加到暂存区,以实现Git的追踪;然后使用git commit将其提交到版本库。 

3.4 添加暂存区

基本语法

  • git add 文件名:添加单个文件
  • git add .:添加所有文件

案例实操

  • Step1查看本地库状态(同“3.3 Step3”)(暂存区不存在任何文件

  • Step2:将工作区的文件添加到暂存区,再次查看本地库状态(暂存区检测到存在文件
    • Git默认将行末换行符进行转换
    • Windows的行末换行符:CRLF(Carriage Return Line Feed) \r\n → 回车符+换行符
    • Linux的行末换行符:LF(Line Feed)  \n → 仅为换行符

  • Step3:将暂存区的文件删除(工作区的文件并没有删除),再次查看本地库状态(同“Step1”)

  • Step4:将工作区的文件重新添加到暂存区,并查看本地库状态

  • 文件状态2:Changes to be committed(已暂存的改动)
    • 文件的修改已经被添加到了暂存区(在暂存区生成了快照,等待被提交到版本库),Git已经追踪到该文件;
    • 这个状态是通过“git add”命令将文件添加到暂存区后出现的;
    • 可使用“git commit”命令将暂存区的改动提交到版本库;或使用“git rm”命令将该文件从暂存区中删除。

3.5 提交本地库

基本语法

  • git commit -m "日志信息" 文件名

案例实操

  • Step1查看本地库状态(同“3.4 Step4”)(存在待提交的文件

  • Step2:将暂存区的文件提交到本地库,再次查看本地库状态(不存在待提交文件
    • 不再显示No commits yet,表明当前已经提交过历史版本或拥有版本信息。
    • 显示nothing to commit, working tree clean,表明提交后没有文件的新增或修改,工作树是干净的,无任何东西需要再次提交。

3.6 历史版本

基本语法

  • git reflog:查看版本精简信息(精简版本号、指针指向、日志信息)
  • git log:查看版本详细信息(完整版本号、指针指向、提交者的用户签名Author、提交日期Date、日志信息)

案例实操

  • 当前指针HEAD指向master分支的第一个历史版本

3.7 修改文件

第二次修改

  • Step1:修改文件,查看本地库状态

  • Step2:将工作区的修改文件添加到暂存区,再次查看本地库状态

  • Step3:将暂存区的文件提交到本地库,再次查看本地库状态、历史版本
    • Git是按照行来维护文件的,修改一行 等价于 删除一行和插入一行

第三次修改

  • Step1:修改文件,查看本地库状态

  • Step2:将工作区的修改文件添加到暂存区,再次查看本地库状态

  • Step3:将暂存区的文件提交到本地库,再次查看本地库状态、历史版本

  • 注1:由于当前指针HEAD指向master分支的第3个版本,因此使用“cat”命令查看文件,显示的是第3个版本的内容。

  • 注2:尽管存在多个版本,但是工作区从始至终只有一个文件。换句话说,Git进行版本控制并不是通过副本来实现的,而是通过指针实现的。

  • 文件状态3:Changes not staged for commit(未暂存的改动)
    • 这表示已经跟踪的文件发生了修改,但这些修改尚未被添加到暂存区。
    • 这些修改不会被包含在下一次的提交中,除非你使用git add命令将其添加到暂存区。
    • 这个状态通常通过git diff查看未暂存的改动。

3.8 版本穿梭

基本语法

  • git reset --hard 版本号

案例实操1(向前穿梭)

要求:从历史版本3穿梭回到历史版本2

  • Step1:查看历史版本信息(复制历史版本2的版本号)

  • Step2:版本穿梭(切换回第2个历史版本)

  • Step3:再次查看历史版本信息(此时指针HEAD已经指向master分支的第2个版本)
    • 注:工作区中hello.txt文件的内容也会穿梭到相应版本

  • Step4:验证指针的指向(查看配置文件)

案例实操2(向前穿梭)

要求:从历史版本2穿梭回到历史版本1

  • Step1:查看历史版本信息(复制历史版本1的版本号)

  • Step2:版本穿梭(切换回第1个历史版本)

  • Step3:再次查看历史版本信息(此时指针HEAD已经指向master分支的第1个版本)
    • 注:工作区中hello.txt文件的内容也会穿梭到相应版本

  • Step4:验证指针的指向(查看配置文件)

案例实操3(向后穿梭)

要求:从历史版本1穿梭到历史版本3

  • Step1:查看历史版本信息(复制历史版本3的版本号)

  • Step2:版本穿梭(切换回第3个历史版本)

  • Step3:再次查看历史版本信息(此时指针HEAD已经指向master分支的第3个版本)
    • 注:工作区中hello.txt文件的内容也会穿梭到相应版本

  1. Step4:验证指针的指向(查看配置文件)

小结

        在Git中,有三种常见的状态,分别是"Untracked files"、"Changes not staged for commit"和"Changes to be committed"。这些状态反映了文件在Git版本控制中的不同变化阶段。

  • Untracked files(未跟踪的文件):
    • 这表示有新文件在工作目录中,但尚未被Git跟踪。
    • 这些文件不在Git的版本控制之下,Git并不追踪这些文件的变化。
    • 可以使用git add命令将这些文件添加到暂存区,然后使用git commit将其提交到版本库。
  • Changes not staged for commit(未暂存的改动):
    • 这表示已经跟踪的文件发生了修改,但这些修改尚未被添加到暂存区。
    • 这些修改不会被包含在下一次的提交中,除非你使用git add命令将其添加到暂存区。
    • 这个状态通常通过git diff查看未暂存的改动。
  • Changes to be committed(已暂存的改动):
    • 这表示文件的修改已经被添加到了暂存区,准备提交到版本库。
    • 这个状态是通过git add命令将文件添加到暂存区后出现的。
    • 使用git commit命令可以将暂存区的改动提交到版本库。
    • 这些状态可以帮助你了解工作目录中文件的状态,以及它们在版本控制中的变化。使用git add和git commit命令可以管理这些状态,使代码的变化被记录并保持版本控制的一致性。

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

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

相关文章

Java如何优雅地判断对象是否为空

点击下载《Java如何优雅地判断对象是否为空》 1. 前言 在实际项目中,我们经常需要对各种变量或对象进行判空校验。这是因为,如果不进行判空校验,当遇到空值时,可能会导致程序出现NullPointerException异常。这是一种常见的运行时…

【INTEL(ALTERA)】为什么 Nios® V/g 处理器无法从指令紧耦合内存 (TCM) 启动?

说明 由于英特尔 Quartus Prime Pro Edition 软件版本 23.3 对Nios V/g 处理器的限制,Nios V/g 处理器无法直接从内存初始化的指令 TCM 启动。 造成这个问题的主要原因是指令中药只能作为指令存储器访问(不支持作为指令和数据存储器)。因此…

全国各城市绿地及绿化面积数据,shp/excel格式,2020-2022年

基本信息. 数据名称: 全国各城市绿地及绿化面积数据 数据格式: Shp、excel 数据时间: 2020-2022年 数据几何类型: 面 数据坐标系: WGS84 数据来源:网络公开数据 数据字段: 序号字段名称字段说明1province省份名称2city城市名称4city_dm城市…

2401llvm,clang语法树简介

原文 ClangAST简介 幻灯片 介绍 Clang的AST与其他一些编译器生成的AST不同,因为它与编写的C代码和C标准类似.如,在AST中,按非简化形式提供括号式和编译时常量. 这使得Clang的AST非常适合重构. 可通过生成的Doxygen获得所有ClangAST节点的文档.搜索引擎也会索引doxygen的在…

Servlet对象

ServletConfig对象 是什么 ServletConfig是javax.servlet.包下的一个接口,ServletConfig它是Servlet的一个配置对象; ServletConfig是由tomcat容器创建,通过init方法传入给Servlet; ServletConfig对象如何获取? 在GenericServle…

SpringBoot连接mysql数据库相关配置(druid连接池)

一、引入mysql8依赖 <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.23</version></dependency><dependency><groupId>com.alibaba</groupId><artifa…

【python】python实现代码雨【附源码】

欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 一、效果图&#xff1a; 二、准备工作 &#xff08;1)、导入必要的模块&#xff1a; 代码首先导入了需要使用的模块&#xff1a;requests、lxml和csv。 import requests from lxml import etree import csv 如果出现模…

Linux大老都是怎么记住这么多命令的?

今天给大家带来的是面试/实际工作中经常用到的Linux相关操作命令: 一. vi/vim编辑器 ---->文本编辑器 作用&#xff1a;创建文件&#xff0c;编辑文件&#xff0c;查看文件 格式&#xff1a;vi/vim 文件的名字 解析&#xff1a;如果该文件不存在&#xff0c;vi就会创建该…

logback配置xml日志文件(保姆级教程)

前言 这是个啥,这就是个控制日志输出格式、控制日志输出位置、控制日志输出环境、控制日志输出级别的玩意、控制忽略输出的日志就这些功能,没有什么很复杂的东西,废话不说多了。 配置介绍 configuration <configuration scan="true" scanPeriod="10 s…

外包干了一个月,技术退步明显。。。。。

先说一下自己的情况&#xff0c;本科生&#xff0c;19年通过校招进入南京某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

【QML COOK】- 012-在QML中使用OpenGL渲染

本文是参照了两个文章编写的。 一是QML的例子&#xff1a;Scene Graph - OpenGL Under QML | Qt Quick 6.6.1 二是关于SceneGraph的介绍&#xff1a;Qt Quick Scene Graph | Qt Quick 6.2.11 这里我提取一下重点方便大家理解。 一个QML程序只能用一种计算机图形接口。不能有…

基于SpringBoot Vue美食网站系统

大家好✌&#xff01;我是Dwzun。很高兴你能来阅读我&#xff0c;我会陆续更新Java后端、前端、数据库、项目案例等相关知识点总结&#xff0c;还为大家分享优质的实战项目&#xff0c;本人在Java项目开发领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#x…

测试工程师必看!测试用例设计全解析,让你彻底掌握

测试工程师在入行时&#xff0c;都会接触到一个名词——测试用例&#xff0c;都知道测试用例是干什么用的&#xff0c;提到设计测试用例的方法&#xff0c;大部分测试工程师都会侃侃而谈&#xff1a;等价类法、边界值法、判定表法、正交分解法……这些方法说起来都如数家珍&…

MySQL的MVCC

MVCC&#xff08;多版本并发控制&#xff09;multiversion concurrency control 读读并发&#xff1a;可以并发 读写并发&#xff08;innoDB&#xff09;&#xff1a;MVCC机制解决 写写&#xff1a;互斥 快照读&#xff1a;不加锁的简单select属于快照读&#xff0c;即不加…

揭秘大数据时代的内存数据存储、数据缓存:redis缓存框架!

介绍&#xff1a;Redis 是一个开源的、基于内存的数据存储系统&#xff0c;它也可以持久化数据到硬盘上。Redis 以其高性能、高可靠性和丰富的数据结构支持而著称&#xff0c;在现代应用程序中被广泛用作数据库、缓存和消息中间件。 主要特点&#xff1a; 键值存储&#xff1a;…

Unity工程没有创建.sln文件,导致打开C#文件无法打开解决方案

最近又开始折腾些Unity的小项目&#xff0c;重新遇到一些常见的小问题 点击报错文件 却没有打开文件 于是查看了下打开Window->Package Manager 选择Unity Registry 搜索Visual Studio Editor&#xff0c;发现并没有安装 同理&#xff0c;也可以安装VSCode的插件 问题解决了…

JVM多线程读写和锁

文章目录 1 原子性2 可见性3 有序性4 CAS5 synchronized 优化5.1 轻量级锁5.2 锁膨胀5.3 自旋5.4 偏向锁5.5 其他优化 1 原子性 问题:两个线程对初始值为 0 的静态变量 i 一个做自增&#xff0c;一个做自减&#xff0c;各做 5000 次&#xff0c;结果是 0 吗&#xff1f; i产生…

.NET集成IdGenerator生成分布式全局唯一ID

前言 生成分布式唯一ID的方式有很多种如常见的有UUID、Snowflake&#xff08;雪花算法&#xff09;、数据库自增ID、Redis等等&#xff0c;今天我们来讲讲.NET集成IdGenerator生成分布式全局唯一ID。 分布式ID是什么&#xff1f; 分布式ID是一种在分布式系统中生成唯一标识符…

Unity - transform使用

Test_03 TransformTest 控制物体位置和物体间的父子关系 public class TransformTest : MonoBehaviour {void Start(){// 【获取位置】// 世界坐标中物体的位置Debug.Log(transform.position);// 物体相对于父物体的位置Debug.Log(transform.localPosition);// 【…

实用的SQLite数据库可视化管理工具推荐

前言 俗话说得好“工欲善其事&#xff0c;必先利其器”&#xff0c;合理的选择和使用可视化的管理工具可以降低技术入门和使用门槛。今天推荐7款实用的SQLite数据库可视化管理工具(GUI)&#xff0c;帮助大家更好的管理SQLite数据库。 什么是SQLite&#xff1f; SQLite是一个…