当前位置: 首页 > news >正文

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 的文件(文件名称固定),列出要忽略的文件模式。下面是一个示例:

相关文章:

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 获…...

Linux——多线程(五)

1.线程池 1.1初期框架 thread.hpp #include<iostream> #include <string> #include <unistd.h> #include <functional> #include <pthread.h>namespace ThreadModule {using func_t std::function<void()>;class Thread{public:void E…...

张量分解(4)——SVD奇异值分解

&#x1f345; 写在前面 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;这里是hyk写算法了吗&#xff0c;一枚致力于学习算法和人工智能领域的小菜鸟。 &#x1f50e;个人主页&#xff1a;主页链接&#xff08;欢迎各位大佬光临指导&#xff09; ⭐️近…...

第三方配件也能适配苹果了,iOS 18与iPadOS 18将支持快速配对

苹果公司以其对用户体验的不懈追求和对创新技术的不断探索而闻名。随着iOS 18和iPadOS 18的发布&#xff0c;苹果再次证明了其在移动操作系统领域的领先地位。 最新系统版本中的一项引人注目的功能&#xff0c;便是对蓝牙和Wi-Fi配件的配对方式进行了重大改进&#xff0c;不仅…...

Docker 部署 Nginx 并在容器内配置申请免费 SSL 证书

文章目录 dockerdocker-compose.yml申请免费 SSL 证书请求头参数带下划线 docker https://hub.docker.com/_/nginx docker pull nginx:1.27注&#xff1a; 国内网络原因无法下载镜像&#xff0c;nginx 镜像文件下载链接 https://pan.baidu.com/s/1O35cPbx6AHWUJL1v5-REzA?pw…...

模型评估与选择

2.1 经验误差与过拟合 错误率&#xff08;error rate&#xff09;&#xff1a; 分类错误的样本数占样本总数的比例 精度&#xff08;accuracy&#xff09;&#xff1a;1- 错误率 训练误差 / 经验误差&#xff1a;在训练集上的误差 泛化误差&#xff1a;在新样本上的误差 过…...

有必要把共享服务器升级到VPS吗?

根据自己的需求来选择是否升级&#xff0c;虚拟专用服务器 (VPS) 是一种托管解决方案&#xff0c;它以低得多的成本提供专用服务器的大部分功能。使用 VPS&#xff0c;您的虚拟服务器将与在其上运行的其他虚拟服务器共享硬件服务器的资源。但是&#xff0c;与传统的共享托管&am…...

LLM代理应用实战:构建Plotly数据可视化代理

如果你尝试过像ChatGPT这样的LLM&#xff0c;就会知道它们几乎可以为任何语言或包生成代码。但是仅仅依靠LLM是有局限的。对于数据可视化的问题我们需要提供一下的内容 描述数据:模型本身并不知道数据集的细节&#xff0c;比如列名和行细节。手动提供这些信息可能很麻烦&#…...

大模型系列3--pytorch dataloader的原理

pytorch dataloader运行原理 1. 背景2. 环境搭建2.1. 安装WSL & vscode2.2. 安装conda & pytorch_gpu环境 & pytorch 2.112.3 命令行验证python环境2.4. vscode启用pytorch_cpu虚拟环境 3. 调试工具3.1. vscode 断点调试3.2. py-spy代码栈探测3.3. gdb attach3.4. …...

SQLServer 如何设置端口

在SQL Server中&#xff0c;可以通过以下步骤设置端口&#xff1a; 打开SQL Server配置管理器。可以在开始菜单中搜索“SQL Server配置管理器”来找到它。 在左侧导航窗格中&#xff0c;展开“SQL Server网络配置”节点。 选择你要配置的实例&#xff0c;如“SQL Server Netw…...

调整网络安全策略以适应不断升级的威胁形势

关键网络安全统计数据和趋势 当今数字时代网络安全的重要性...

(leetcode学习)9. 回文数

给你一个整数 x &#xff0c;如果 x 是一个回文整数&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 回文数 是指正序&#xff08;从左向右&#xff09;和倒序&#xff08;从右向左&#xff09;读都是一样的整数。 例如&#xff0c;121 是回文&#xff0c;而…...

QT VTK 简单测试工程

目录 1 目录结构 2 文件源码 3 运行结果 4 报错及处理 使用编译好的VTK库进行测试 1 目录结构 2 文件源码 Pro文件 QT core guigreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c17# You can make your code fail to compile if it uses deprecated APIs. #…...

ES6 Generator函数的异步应用 (八)

ES6 Generator 函数的异步应用主要通过与 Promise 配合使用来实现。这种模式被称为 “thunk” 模式&#xff0c;它允许你编写看起来是同步的异步代码。 特性&#xff1a; 暂停执行&#xff1a;当 Generator 函数遇到 yield 表达式时&#xff0c;它会暂停执行&#xff0c;等待 …...

Navicat:打造高效数据库管理之道

1. 导言 1.1 介绍Navicat Navicat是一款功能强大的数据库管理工具,旨在帮助用户高效地管理多种类型的数据库,包括MySQL、PostgreSQL、Oracle、SQL Server等。通过Navicat,用户可以轻松地进行数据库的创建、编辑、备份、同步和调试等操作,极大地简化了数据库管理的复杂性。…...

Python和C++全球导航卫星系统和机器人姿态触觉感知二分图算法

&#x1f3af;要点 &#x1f3af;马尔可夫随机场网格推理学习 | &#x1f3af;二维伊辛模型四连网格模型推理 | &#x1f3af;统计物理学模型扰动与最大乘积二值反卷积 | &#x1f3af;受限玻尔兹曼机扰动和最大乘积采样 | &#x1f3af;视觉概率生成模型测试图像 &#x1f3…...

Unity 优化合集

1️⃣ 贴图优化 1. Read/Write Enable 这个属性勾选后允许你在运行时读取和写入纹理数据&#xff0c;这对于需要实时生成内容或者需要动态修改纹理的场合非常有用但在大部分情况下这是不必要的。如果打开这个属性&#xff0c;会使运行时贴图大小翻倍&#xff0c;内存中会额外…...

第九届MathorCup高校数学建模挑战赛-A题:基于数据驱动的城市轨道交通网络优化研究

目录 摘 要 一、 问题的提出 二、 基本假设 三、 符号说明 四、 问题分析 4.1 问题 1 的分析 4.2 问题 2 的分析 4.3 问题 3 的分析 4.4 问题 4 的分析 五、 问题 1 的模型建立与求解 5.1 问题分析 5.2 数据处理 5.2.1 数据统计 5.2.2 异常数据处理方法 5.2.3 剔除异常数据值 5…...

Spring webflux基础核心技术

一、 用操作符转换响应式流 1 、 映射响应式流元素 转换序列的最自然方式是将每个元素映射到一个新值。 Flux 和 Mono 给出了 map 操作符&#xff0c;具有 map(Function<T&#xff0c;R>) 签名的方法可用于逐个处理元素。 当操作符将元素的类型从 T 转变为 R 时&#xf…...

关闭Ubuntu烦人的apport

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

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下&#xff0c;无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作&#xff0c;还是游戏直播的画面实时传输&#xff0c;低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架&#xff0c;凭借其灵活的编解码、数据…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣&#xff08;LeetCode&#xff09; ​遍历字符串​&#xff1a;通过外层循环逐一检查每个字符。​遇到 ? 时处理​&#xff1a; 内层循环遍历小写字母&#xff08;a 到 z&#xff09;。对每个字母检查是否满足&#xff1a; ​与…...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...