Git 从入门到精通
一、环境配置
下载地址:https://git-scm.com/downloads/
二、用户配置
找到git bash
git --version 查看当前版本
git config --global user.name szhipeng625 设置用户名
git config --global user.email szhipeng625@gmail.com 设置邮箱
git config --global --list 查看配置环境
git config --global credential.helper store
这段代码的作用是配置 Git 的全局凭据助手为 store
模式。这种模式会将你的 Git 凭据(如用户名和密码)以明文的形式存储在一个文件中,通常位于用户主目录下的 ~/.git-credentials
文件中。
当你配置了这个助手后,Git 在需要身份验证时会执行以下操作:
- 首次提交凭据时:Git 会询问你的用户名和密码,并将它们保存到
~/.git-credentials
文件中。 - 后续操作时:Git 会直接从
~/.git-credentials
中读取已保存的凭据,而无需再次询问用户名和密码。
三、创建仓库
创建仓库有两种方式。1.再本地创建一个仓库 git init 2.克隆一个远程仓库 git clone
1.mkdir learn-git 创建目录。
cd learn-git 进入文件并 git init 初始化本地仓库, cd .git 进入该文件下 ls -altr查看仓库的配置文件
含有.git就说明他是一个仓库
2. 拉取远程仓库 进入文件下点击git clong + 仓库即可
四、工作方式
git status 查看仓库当中文件的状态
git reset
的作用
git reset
是 Git 中一个非常强大的命令,用于撤销更改或调整当前分支的状态。它可以在不同的场景下使用,比如修改提交记录、撤销文件的更改、或者调整 HEAD 指针的位置。
git reset
的基本语法
git reset [<mode>] [<commit>]
-
<mode>
:--soft
:仅移动HEAD
,保留暂存区和工作区的更改。--mixed
(默认):移动HEAD
,重置暂存区,但保留工作区的更改。--hard
:移动HEAD
,同时重置暂存区和工作区(所有更改都会丢失)。
-
<commit>
:指定需要重置到的目标提交,可以是提交哈希值、分支名、HEAD 等。
git reset
的三种模式
git reset
会影响三个区域:
- HEAD:当前分支的指针。
- 暂存区(Stage/Index)
- 工作区(Working Directory)
1. --soft
模式
仅移动 HEAD
指针到指定提交,暂存区和工作区的更改保持不变。
用途:用来修改最近一次的提交,但保留更改以便重新提交。
git reset --soft HEAD~1
- 将 HEAD 指针回退到上一个提交。
- 原来的提交内容会保持在暂存区,你可以重新提交或修改。
2. --mixed
模式(默认模式)
移动 HEAD
指针到指定提交,同时将暂存区的更改撤销,但工作区的更改保留。
用途:撤销提交并解暂存文件,方便重新编辑。
git reset HEAD~1
- 将 HEAD 指针回退到上一个提交。
- 暂存区的文件被撤销,但文件仍保留在工作区。
3. --hard
模式
移动 HEAD
指针到指定提交,同时清空暂存区和工作区的更改。
用途:彻底清除所有更改,恢复到某个提交的状态。
git reset --hard HEAD~1
- 将 HEAD 指针回退到上一个提交。
- 暂存区和工作区的内容都会被还原到指定提交的状态,无法恢复。
常用场景
1. 撤销最后一次提交但保留更改
git reset --soft HEAD~1
- 用于将提交回滚到暂存区,但保留所有更改。
- 适合发现提交错误后重新提交。
2. 撤销暂存的文件
bash
复制代码
git reset HEAD file.txt
- 用于将
file.txt
从暂存区撤回到工作区,但不会影响文件内容。
3. 恢复到指定提交
git reset --hard <commit>
- 用于将分支状态恢复到
<commit>
指定的提交,并清除所有暂存区和工作区的更改。
4. 清空最近的多个提交
git reset --hard HEAD~3
- 删除最近的 3 个提交,并将状态恢复到之前的提交。
注意事项
-
--hard
操作是不可逆的:- 使用
--hard
后,所有未提交的更改会被丢弃,无法恢复。 - 如果误操作,可以尝试通过
git reflog
恢复:git reflog git reset --hard <commit-hash>
- 使用
-
不影响远程仓库:
git reset
只会影响本地仓库的状态。- 如果远程仓库已经有提交记录,建议用
git revert
来撤销。
git reset
和 git checkout
、git revert
的区别
功能 | git reset | git checkout | git revert |
---|---|---|---|
用途 | 修改历史提交、撤销更改 | 切换分支或恢复单个文件 | 生成一个新的提交,撤销旧的提交 |
是否影响历史 | 是(可以删除提交记录) | 否 | 否 |
是否影响远程 | 否(除非强制推送) | 否 | 否(会生成新提交记录) |
通过 Git Bash 创建的文件夹会默认保存在 当前工作目录 下。当前工作目录的位置取决于你打开 Git Bash 时的起始路径或切换到的路径。
确定文件夹创建位置的方法
-
查看当前工作目录
打开 Git Bash 后,输入以下命令查看当前工作目录:bash
复制代码
pwd
这将返回当前所在的路径,例如:
/c/Users/YourUsername
-
切换到不同目录后再创建
如果你希望在特定路径下创建文件夹,可以先使用cd
命令切换到目标路径:cd /c/Users/YourUsername/Documents mkdir myfolder
这将在
Documents
文件夹中创建一个名为myfolder
的文件夹。 -
检查默认起始路径
默认情况下,Git Bash 打开时的起始路径通常是你的用户主目录:/c/Users/YourUsername
你可以在这里找到通过 Git Bash 创建的文件夹。
-
更改默认起始路径
如果你希望 Git Bash 打开时使用不同的默认路径,可以进行如下设置:
-
打开 Git Bash 的快捷方式。
- 右键点击,选择
属性
。 - 在
起始位置
(Start in) 一栏,输入你希望的默认路径,例如:C:\Users\YourUsername\Documents
五、VSCode使用Git
相关文章:

Git 从入门到精通
一、环境配置 下载地址:https://git-scm.com/downloads/ 二、用户配置 找到git bash git --version 查看当前版本 git config --global user.name szhipeng625 设置用户名 git config --global user.email szhipeng625gmail.com 设置邮箱 git config --global …...

vue3使用vue3-video-play播放m3u8视频
1.安装vue3-video-play npm install vue3-video-play --save2.在组件中使用 import vue3-video-play/dist/style.css; import VideoPlay from vue3-video-play;// 视频配置项 const options reactive({src: https://test-streams.mux.dev/x36xhzz/x36xhzz.m3u8, //视频源mute…...
使用API有效率地管理Dynadot域名,为文件夹中的域名统一设置电子邮件转发
关于Dynadot Dynadot是通过ICANN认证的域名注册商,自2002年成立以来,服务于全球108个国家和地区的客户,为数以万计的客户提供简洁,优惠,安全的域名注册以及管理服务。 Dynadot平台操作教程索引(包括域名邮…...

Java虚拟机(Java Virtual Machine,JVM)
一、Java 虚拟机 Java 虚拟机(Java Virtual Machine, JVM)是运行 Java 字节码的虚拟机。它是Java平台的核心组件之一,使得Java程序具有 一次编写,到处运行(Write Once, Run Anywhere) 的特性。 JVM 有针对…...

[免费]微信小程序(高校就业)招聘系统(Springboot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序(高校就业)招聘系统(Springboot后端Vue管理端),分享下哈。 项目视频演示 【免费】微信小程序(高校就业)招聘系统(Springboot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项目介绍…...

TCP Analysis Flags 之 TCP Retransmission
前言 默认情况下,Wireshark 的 TCP 解析器会跟踪每个 TCP 会话的状态,并在检测到问题或潜在问题时提供额外的信息。在第一次打开捕获文件时,会对每个 TCP 数据包进行一次分析,数据包按照它们在数据包列表中出现的顺序进行处理。可…...

#Phi-4:微软 14B 参数开源模型,性能匹敌 OpenAI GPT-4o-mini,现已登陆 Ollama
Phi-4:微软 14B 参数开源模型,性能匹敌 OpenAI GPT-4o-mini,现已登陆 Ollama 一、Phi-4 模型概述 (一)模型参数与规模 Phi-4 是微软推出的一款小型语言模型,拥有 140 亿参数。虽然参数量相对较小…...
JSON头文件调用
除了传统的读写操作,现在流行的json文件读取保存,还是非常方便的. 头文件放在源代码中,在调用处添加引用路径 #include “…/ConsoleApplication1/include/json.hpp” using json nlohmann::json; 数据结构例子: // 声明Person类 class Person { public: std::string name; i…...

Swagger学习⑭——@Contact注解
介绍 Contact 是 Swagger/OpenAPI 3.0 注解中的一个注解,用于定义 API 文档中的联系信息。通过 Contact 注解,你可以指定 API 维护者的联系方式,例如电子邮件、URL 或名称等。 源代码 package io.swagger.v3.oas.annotations.info;import …...
如何监听Vuex数据的变化?
使用watch方法监听Vuex state的变化: // 在 Vue 组件中 this.$store.watch((state) > state.someState,(newValue, oldValue) > {console.log(someState changed from, oldValue, to, newValue);} );使用subscribe方法监听mutation的变化: // 在…...

Redis 优化秒杀(异步秒杀)
目录 为什么需要异步秒杀 异步优化的核心逻辑是什么? 阻塞队列的特点是什么? Lua脚本在这里的作用是什么? 异步调用创建订单的具体逻辑是什么? 为什么要用代理对象proxy调用createVoucherOrder方法? 对于代码的详细…...
前端中常用的单位度量(px,rpx,rem,em,vw,vh)+图片自适应
文章目录 前端中常用的单位度量vw/vh 的场景应用px/rem/em 之间的转换关系项目中的rem 应用根元素 font-size 设置为16px 的应用惯例自适应之图片应用1. 使用 max-width 和 max-height2. 使用 object-fit 属性3. 使用 background-image 模拟图片展示 前端中常用的单位度量 px&…...

STM32之一种双通路CAN总线消息备份冗余处理方法(十三)
STM32F407 系列文章 - Dual-CANBus-ProMethod(十三) 目录 前言 一、现状分析 二、解决思路 1.应用场景网络结构图 2.数据发送流程 3.数据接收流程 4.用到的模块 1.CAN网络速率及时间片分配 2.CAN网络消息ID组成 3.设备节点定义 4.数据格式说明…...

从零开始:使用VSCode搭建Python数据科学开发环境
引言 在数据科学领域,一个高效、稳定的开发环境是成功的关键。本文将详细介绍如何使用Visual Studio Code搭建一个完整的Python数据科学开发环境。通过本指南,您将学会: 安装和配置VSCode,包括基本设置和快捷键配置设置Python开…...
C#语言的字符串处理
C#语言的字符串处理 引言 在现代编程中,字符串处理是一项重要的技能,几乎在所有编程语言中都有应用。C#语言作为一种强类型的、面向对象的编程语言,提供了丰富的字符串处理功能。这使得开发人员能够方便地进行文本操作,比如字符…...

《安富莱嵌入式周报》第348期:开源低功耗测试仪,开源创意万用表,续航100-300小时,开源PCB电机,自制shell和网络协议栈,开源水培自动化系统
周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版: https://www.bilibili.com/video/BV1Tzr9Y3EQ7/ 《安富莱嵌入式周报》第348期:开源低功…...
npm发布流程说明
一、进入要发布的项目根目录,初始化为npm包 npm initname:最重要的字段之一,项目名称(少于214个字节)。没有name和version不能进行安装; version:最重要的字段之一,项目版本。没有n…...
缓存-文章目录
关于缓存系列文章: 缓存学习总结1(缓存分类) 缓存学习总结2(服务器本地缓存) 缓存学习总结3(服务器内存缓存)推荐使用 缓存学习总结4(分布式缓存) 关于redis系列文章…...
LeetCode 3297.统计重新排列后包含另一个字符串的子字符串数目 I:滑动窗口
【LetMeFly】3297.统计重新排列后包含另一个字符串的子字符串数目 I:滑动窗口 力扣题目链接:https://leetcode.cn/problems/count-substrings-that-can-be-rearranged-to-contain-a-string-i/ 给你两个字符串 word1 和 word2 。 如果一个字符串 x 重新…...
如何在 Ubuntu 24.04 上安装 Memcached 服务器教程
简介 Memcached 是一个高性能、分布式的内存缓存系统,旨在通过减少数据库负载来加速动态 Web 应用程序。它通过将数据和对象缓存在 RAM 中来实现这一点,从而最大限度地减少了从数据库或其他慢速存储层重复获取数据的需要。 本教程的目标是手把手教你如…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...

智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...

视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...
Go 并发编程基础:通道(Channel)的使用
在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...

WPF八大法则:告别模态窗口卡顿
⚙️ 核心问题:阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程,导致后续逻辑无法执行: var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题:…...