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

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 在需要身份验证时会执行以下操作:

  1. 首次提交凭据时:Git 会询问你的用户名和密码,并将它们保存到 ~/.git-credentials 文件中。
  2. 后续操作时: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 个提交,并将状态恢复到之前的提交。

注意事项

  1. --hard 操作是不可逆的

    • 使用 --hard 后,所有未提交的更改会被丢弃,无法恢复。
    • 如果误操作,可以尝试通过 git reflog 恢复:

      git reflog git reset --hard <commit-hash>

  2. 不影响远程仓库

    • git reset 只会影响本地仓库的状态。
    • 如果远程仓库已经有提交记录,建议用 git revert 来撤销。

git resetgit checkoutgit revert 的区别

功能git resetgit checkoutgit revert
用途修改历史提交、撤销更改切换分支或恢复单个文件生成一个新的提交,撤销旧的提交
是否影响历史是(可以删除提交记录)
是否影响远程否(除非强制推送)否(会生成新提交记录)

通过 Git Bash 创建的文件夹会默认保存在 当前工作目录 下。当前工作目录的位置取决于你打开 Git Bash 时的起始路径或切换到的路径。


确定文件夹创建位置的方法

  1. 查看当前工作目录
    打开 Git Bash 后,输入以下命令查看当前工作目录:

    bash

    复制代码

    pwd

    这将返回当前所在的路径,例如:

    /c/Users/YourUsername

  2. 切换到不同目录后再创建
    如果你希望在特定路径下创建文件夹,可以先使用 cd 命令切换到目标路径:

    cd /c/Users/YourUsername/Documents mkdir myfolder

    这将在 Documents 文件夹中创建一个名为 myfolder 的文件夹。

  3. 检查默认起始路径
    默认情况下,Git Bash 打开时的起始路径通常是你的用户主目录:

    /c/Users/YourUsername

    你可以在这里找到通过 Git Bash 创建的文件夹。

  4. 更改默认起始路径

    如果你希望 Git Bash 打开时使用不同的默认路径,可以进行如下设置:

  5. 打开 Git Bash 的快捷方式。

  6. 右键点击,选择 属性
  7. 起始位置 (Start in) 一栏,输入你希望的默认路径,例如:

    C:\Users\YourUsername\Documents

五、VSCode使用Git 

http://www.lryc.cn/news/518514.html

相关文章:

  • vue3使用vue3-video-play播放m3u8视频
  • 使用API有效率地管理Dynadot域名,为文件夹中的域名统一设置电子邮件转发
  • Java虚拟机(Java Virtual Machine,JVM)
  • [免费]微信小程序(高校就业)招聘系统(Springboot后端+Vue管理端)【论文+源码+SQL脚本】
  • TCP Analysis Flags 之 TCP Retransmission
  • #Phi-4:微软 14B 参数开源模型,性能匹敌 OpenAI GPT-4o-mini,现已登陆 Ollama
  • JSON头文件调用
  • Swagger学习⑭——@Contact注解
  • 如何监听Vuex数据的变化?
  • Redis 优化秒杀(异步秒杀)
  • 前端中常用的单位度量(px,rpx,rem,em,vw,vh)+图片自适应
  • STM32之一种双通路CAN总线消息备份冗余处理方法(十三)
  • 从零开始:使用VSCode搭建Python数据科学开发环境
  • C#语言的字符串处理
  • 《安富莱嵌入式周报》第348期:开源低功耗测试仪,开源创意万用表,续航100-300小时,开源PCB电机,自制shell和网络协议栈,开源水培自动化系统
  • npm发布流程说明
  • 缓存-文章目录
  • LeetCode 3297.统计重新排列后包含另一个字符串的子字符串数目 I:滑动窗口
  • 如何在 Ubuntu 24.04 上安装 Memcached 服务器教程
  • 《深度学习模型在鸿蒙分布式框架下的跨设备高效之旅》
  • [python3]Excel解析库-xlutils
  • Springboot Bean创建流程、三种Bean注入方式(构造器注入、字段注入、setter注入)、循坏依赖问题
  • mybatisX插件的使用,以及打包成配置
  • 【初阶数据结构】线性表之单链表
  • CentOS7通过yum安装JDK
  • c# 常见的几种取整场景
  • 数据库回滚:大祸临头时
  • 【GoLang】两个字符串如何比较大小?以及字典顺序的比较规则
  • 5G学习笔记之SNPN系列之UE入网和远程配置
  • C#版OpenCv常用函数大全