Git代码管理工具 — 3 Git基本操作指令详解

目录

1 获取本地仓库

2 基础操作指令

2.1 基础操作指令框架

2.2 git status查看修改的状态

2.3 git add添加工作区到暂存区

2.4 提交暂存区到本地仓库

2.5 git log查看提交日志

2.6 git reflog查看已经删除的记录

2.7 git reset版本回退

2.8 添加文件至忽略列表


1 获取本地仓库

要使用Git进行代码的版本控制,确实需要首先获取或创建一个本地仓库,步骤如下:

1)创建本地仓库目录:在电脑创建一个新的文件夹,例如命名为git_test,这个文件夹将作为你的本地Git仓库。

2)打开Git Bash:进入这个新创建的目录后,可以通过右键点击文件夹空白处,选择"Git Bash Here"来打开Git Bash窗口。右键菜单中在上一节安装中有默认安装此选项。

3)初始化Git仓库:在Git Bash窗口中,输入命令git initgit init命令会初始化一个新的Git仓库,创建必要的Git文件和目录结构。

4)检查.git目录:执行git init命令后,Git会在当前目录下创建一个名为.git的隐藏目录。这个目录包含了Git仓库的所有元数据,例如提交历史、分支信息等。

2 基础操作指令

2.1 基础操作指令框架

Git工作目录下对于文件的修改(增加、删除、更新)会存在几个状态,这些修改的状态会随着我们执行Git的命令而发生变化。

 参考黑马程序员教程

2.2 git status查看修改的状态

git status 是一个非常有用的Git命令,它用于显示当前Git仓库的状态。下面是git status命令的一些常见输出示例:

  • 未跟踪的文件:显示当前目录下未被Git跟踪的新文件。

    Untracked files: (use "git add <file>..." to include in what will be committed) newfile.txt

  • 已修改的文件:显示已经被Git跟踪但自上次提交以来有修改的文件。

    Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: existingfile.txt

  • 已暂存的文件:显示已经被添加到暂存区,准备下一次提交的文件。

    Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: newfile.txt modified: existingfile.txt

首先通过touch创建一个文件,新创建的文件应该是未跟踪的文件:

2.3 git add添加工作区到暂存区

git add 是一个用于将更改添加到Git的暂存区的命令。暂存区是Git中的一个临时区域。以下是一些常用的 git add 命令用法:

  • 添加单个或多个文件

git add file1.txt file2.txt

  • 添加所有更改. 表示当前目录下的所有文件,而 -A 表示所有更改,包括删除的文件。

git add .

或者

git add -A

  • 添加修改过的文件和新文件:这将只添加修改过的文件和被删除的文件到暂存区,但不包括新文件。

git add -u

  • 使用通配符添加文件:这将添加当前目录下所有以 .txt 结尾的文件到暂存区。

git add *.txt

将上面添加的文件暂存到缓冲区中,添加后的文件应该是已暂存的文件:

2.4 提交暂存区到本地仓库

当使用 git add 将更改添加到暂存区后,就可以使用 git commit 来保存这些更改到本地仓库的历史记录中。以下是一些基本的 git commit 命令用法:

  • 提交暂存区的更改

git commit -m "Your commit message"

-m 选项后面跟着的是提交信息,自定义的描述。如果你不使用 -m 选项,Git 会打开默认的文本编辑器让你输入提交信息:

  • 提交所有更改(包括未跟踪的文件)-a 选项会将所有已跟踪的文件的更改和新文件添加到暂存区,然后执行提交。注意,这不会包括已经被删除的文件。

git commit -a -m "Your commit message"

  • 修改最后一次提交--amend 选项允许你修改最后一次提交的信息或添加额外的更改。如果你需要修改最后一次提交,可以使用:

git commit --amend -m "Your new commit message"

  • 使用交互式暂存: 如果你想要对暂存区的更改进行更细致的控制,这将允许你选择哪些更改包含在提交中:

git commit -i

  • 使用Git的图形用户界面提交: 如果你更喜欢使用图形界面,可以使用:

git gui commit

将上面缓存区的文件添加到代码仓库,并添加文件的描述信息:

2.5 git log查看提交日志

git log 是一个用于查看Git仓库提交历史的命令。它可以显示从最近到最旧的提交记录,包括提交的作者、日期、提交信息等。以下是一些常用的 git log 选项:

  • 查看所有提交记录(常用

git log

  • 查看指定数量的提交:这里的 -n 选项后面跟着数字,表示你想要查看的提交记录的数量。

git log -n 5

  • 查看提交的统计信息:将显示每个提交的文件更改统计,包括哪些文件被修改、添加或删除,以及行的更改数量。

git log --stat

  • 查看每次提交的内容差异-p 选项会显示每个提交的差异(即补丁),让你可以看到具体的代码更改。

git log -p

  • 查看图形化的提交历史:这将以图形化的方式展示分支和合并的历史。

git log --graph

  • 查看某个特定文件或目录的提交历史

git log -- path/to/file_or_directory

  • 查看某个作者的提交

git log --author="author name"

  • 查看最近的一次提交

git log -1

查看代码仓库中的文件修改日志信息:

使用git log --graph 进行图形化的显示。

2.6 git reflog查看已经删除的记录

git reflog 命令可以查看最近的Git引用操作记录,每条记录对应一个唯一的引用ID,显示了对引用的改变以及对应的提交ID。可以帮助你找回意外删除或重置的提交,从而恢复代码状态或查看历史操作记录。

使用 git reflog 的一些场景:

  • 找回丢失的提交:如果你执行了 git reset --hard 并且后悔了,你可以使用 git reflog 找到丢失的提交的哈希值,然后使用 git reset --hard <commit-hash> 来恢复。

  • 理解HEAD的移动:如果你不确定HEAD是如何到达当前位置的,reflog 可以给你一个详细的历史记录。

  • 恢复分支状态:如果你不小心删除了一个分支,reflog 可以帮助你找到分支的最后状态,并恢复它。

2.7 git reset版本回退

git reset可以用来撤销提交、修改暂存区中的文件、重置分支指针等。以下是一些常见的 git reset 用法:

  • 重置暂存区,但不更改工作目录:不带任何参数的 git reset 命令会将暂存区中的所有更改重置为最后一次提交的状态,但不会影响工作目录中的文件。<commit>为移动HEAD和当前分支到指定的提交,可以使用 git log(git-log)git reflog 指令查看

git reset

git reset <commit>

  • 重置暂存区,同时更新工作目录:使用 --hard 选项会将暂存区和工作目录都重置为最后一次提交的状态。这会丢失所有未提交的更改。

git reset --hard

git reset --hard <commit>

  • 重置暂存区,但不更新工作目录(只保留更改):使用 --soft 选项会将暂存区重置为最后一次提交的状态,但保留工作目录中的更改,这样你可以重新暂存这些更改并提交。

git reset --soft

git reset --soft <commit>

 使用git reset --hard <commit>命令回退到指定版本。

但是如果操作失误,想取消怎么办?

  • 第一种:如果没回退之前第一条的<commit>还在命令行中,任然可通过git reset --hard <commit>回退。
  • 第二种:如果commit已经在命令行中已经清除,可通过git reflog查看之前的操作状态<commit>,然后使用git reset --hard <commit>回退。

2.8 添加文件至忽略列表

一般我们总会有些文件无需纳入Git 的管理,也不希望它们总出现在未跟踪文件列表。 通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。 在这种情况下,我们可以在工作目录中创建一个名为 .gitignore 的文件(文件名称固定),列出要忽略的文件模式。下面是一个示例:

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

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

相关文章

0.单片机工作原理

文章目录 最小系统 单片机芯片 时钟电路 复位电路 电源 最小系统 单片机芯片 本次51单片机的芯片为&#xff1a;STC89C52 Flash(闪存)程序存储器&#xff1a;存储程序的空间 SRAM&#xff1a;数据存储器&#xff0c;可用于存放程序执行的中间结果和过程数据 DPTR&#xff1a;…

2024-07-14 Unity插件 Odin Inspector2 —— Essential Attributes

文章目录 1 说明2 重要特性2.1 AssetsOnly / SceneObjectsOnly2.2 CustomValueDrawer2.3 OnValueChanged2.4 DetailedInfoBox2.5 EnableGUI2.6 GUIColor2.7 HideLabel2.8 PropertyOrder2.9 PropertySpace2.10 ReadOnly2.11 Required2.12 RequiredIn&#xff08;*&#xff09;2.…

机器人相关工科专业课程体系

机器人相关工科专业课程体系 前言传统工科专业机械工程自动化/控制工程计算机科学与技术 新兴工科专业智能制造人工智能机器人工程 总结Reference: 前言 机器人工程专业是一个多领域交叉的前沿学科&#xff0c;涉及自然科学、工程技术、社会科学、人文科学等相关学科的理论、方…

Linux编程(三)—makefile快速编译

起因 linux环境下&#xff0c;编译c程序很麻烦&#xff0c;后面g -o demo demo.cpp ……往往跟了许多许多东西&#xff0c;这些每次编译的时候都要书写&#xff0c;所以就产生了makefile快速编译方式&#xff0c;具体操作如下。 怎么用makefile? 第一步&#xff1a;下载 m…

WPF学习(2) -- 样式基础

一、代码 <Window x:Class"学习.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.microsoft.com/expression/blend/2008&…

MySQL 聚簇索引和非聚簇索引有什么区别?

聚簇索引&#xff08;主键索引&#xff09;、非聚簇索引&#xff08;二级索引&#xff09;。 这两者之间的最主要的区别是 B 树的叶子节点存放的内容不同&#xff1a; 聚簇索引的 B 树叶子节点存放的是主键值完整的记录&#xff1b;非聚簇索引的 B 树叶子节点存放的是索引值主…

【面试八股总结】C++内存管理:内存分区、内存泄漏、new和delete、malloc和free

参考资料&#xff1a;代码随想录、阿秀 一、内存分区 &#xff08;1&#xff09;栈区 在执行函数时&#xff0c;函数内部局部变量的存储单元都可以在栈上创建&#xff0c;函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中&#xff0c;效率很高&am…

Postman下载及使用说明

Postman使用说明 Postman是什么&#xff1f; ​ Postman是一款接口对接工具【接口测试工具】 接口&#xff08;前端接口&#xff09;是什么&#xff1f; ​ 前端发送的请求普遍被称为接口 ​ 通常有网页的uri参数格式json/key-value请求方式post/get响应请求的格式json 接…

关闭Ubuntu烦人的apport

先来看让人绷不住的&#xff08;恼&#xff09; 我查半天apport是啥玩意发现就一错误报告弹窗&#xff0c;十秒钟给我弹一次一天给我内存弹爆了 就算我程序就算真的不停崩溃&#xff0c;也没你这傻比apport杀伤性强啊&#xff1f;&#xff1f;&#xff1f; 原则上是不建议关闭…

牛客周赛 Round 51 解题报告 | 珂学家

前言 题解 典题场&#xff0c; EF都有很多种解法 A. 小红的同余 性质: 相邻两数互质 x ( m 1 ) / 2 x (m1)/2 x(m1)/2 m int(input())print ((m 1) // 2)B. 小红的三倍数 性质: 各个位数之和是3的倍数&#xff0c;可被3整除 和数的组合顺序无关 n int(input()) arr…

MySQL高级面试点

Explain语句结果中各个字段分别代表什么 id&#xff1a;查询语句没出现一个select关键字&#xff0c;MySQL就会给他分配一个唯一id select_type&#xff1a; select关键字对应哪个查询的类型 simple&#xff1a;简单的查询 不包含任何子查询 primary&#xff1a;查询中如果…

网络安全设备——EDR

网络安全中的EDR&#xff08;Endpoint Detection and Response&#xff0c;端点检测与响应&#xff09;是一种主动式的端点安全解决方案&#xff0c;它专注于监控、检测和响应计算机和终端设备上的安全威胁。以下是EDR的详细解释&#xff1a; 一、定义与功能 EDR是一种网络安…

repo sync同步出错解决

当出现下面提示时 e list of known hosts. Fetching: 100% (1167/1167), done in 44.619s info: A new version of repo is available warning: repo is not tracking a remote branch, so it will not receive updates Repo command failed: RepoUnhandledExceptionError …

Zabbix6.0使用自带模板(Redis by Zabbix agent 2)监控Redis数据库

注意&#xff1a;Zabbix6.0使用Redis by Zabbix agent 2 模板可直接监控Redis数据。 1、添加Redis账号密码信息(如果Redis没有设置密码可省略此步骤) vim zabbix_agent2.confPlugins.Redis.Sessions.redis.Uritcp://redis.huayunworld.com:6379 Plugins.Redis.Sessions.redis…

025-GeoGebra中级篇-曲线(1)_显式曲线、隐式曲线、参数曲线

写到曲线这一章节&#xff0c;不得不先梳理一下数学中关于曲线这一部分的内容&#xff0c;我们常见的曲线有显式曲线、隐式曲线、参数曲线&#xff0c;当然还有极坐标曲线、参数化曲面、分段函数曲线、分形曲线、复数平面上的曲线、随机曲线、和非线性动力系统的轨迹&#xff0…

在 PostgreSQL 里如何实现数据的分布式事务的回滚和补偿机制?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01;&#x1f4da;领书&#xff1a;PostgreSQL 入门到精通.pdf 文章目录 在 PostgreSQL 里如何实现数据的分布式事务的回滚和补偿机制一、分布式事务的概念与挑战&#xff08;一…

STM32智能农田监测系统教程

目录 引言环境准备智能农田监测系统基础代码实现&#xff1a;实现智能农田监测系统 4.1 数据采集模块 4.2 数据处理与分析模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;农田监测与管理问题解决方案与优化收尾与总结 1. 引言 智能农田监测系统通…

【LeetCode 链表合集】

文章目录 1. LeetCode 206 反转链表2. NC40 链表相加 1. LeetCode 206 反转链表 题目链接&#x1f517; 解题思路&#xff1a; &#x1f50d; &#x1f427;创建一个新的节点&#xff0c;使用链表头插的方法&#xff1b; 2. NC40 链表相加 题目链接&#x1f517; 解题思路…

WPF MVVM框架 Caliburn.Micro的Action绑定

WPF MVVM框架 Caliburn.Micro的Action绑定 通过命名约定来绑定Action View <Window x:Class"WpfApp1.Views.AboutView"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml…

spring boot 基础特性

Spring Boot 特性&#xff1a; SpringBoot Starter&#xff08;场景启动器&#xff09;&#xff1a;将常用的依赖分组进行了整合&#xff0c;将其合并到一个依赖中&#xff0c;这样就可以一次性添加到项目的Maven或Gradle构建中。使编码变得简单&#xff0c;SpringBoot采用 Ja…