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

Git常用命令教程,非常细致,零基础也能听懂

关注git常用命令使用方法,如何git管理自己现有的项目,不包括远程连接,不需要可以划走,全文使用git bash进行演示。
每到新知识有提示,行文逻辑,便于理解

文章目录

  • 前言
  • 一、安装Git
  • 二、常用命令
    • 1.配置
    • 2.常用命令
  • 总结

前言

Git是什么??

Git原型是Linus大佬花了不到一个月时间写出的一款分布式版本控制系统底层使用C语言开发,使用起来很快,也很简单,非常牛批!!文章中将体现它的厉害之处。

分布式是什么??
集中式系统通过中央服务器获得最新版本,用户每次更新版本都要上传到中央服务器中,缺点显然,多人协作十分麻烦,安全性低,还要求网速好,不然出错了,所有人都要停下工作,于是分布式诞生了。。

简单来说,分布式中每台主机都是一个服务器,每个人都有完整的版本库,只需要交换每次修改,也就是推送版本库,就可以开始协作了。这样自然提高了安全性,一台主机爆炸了,其他的也不会受到影响,并且在协作开发中可以各干各的,十分方便。当然中央服务器依然存在,作用也只是为了推送版本库更方便,仅此而已。

工作机制??

这里借用廖雪峰老师的原理图,原文在此 liaoxuefeng.com。这里重点关注三个区域。基础只需了解,深入不做探讨!

工作区也就是外部项目文件,比如电脑上资源管理器的显示文件。

版本库每个被git管理的文件库都会生成一个.git文件,点开显示隐藏文件就可以看到,其中index文件夹就是stage暂存区,分支master在regs的文件夹下。

友情提示,.git文件不要乱动,不要乱动,不要乱动!否则会破坏git工具对整个项目管理和结构

废话不多说,直接进入使用!


一、安装Git

直接进入 git官网,无需魔法,选择下载版本,无脑下一步,默认安装路径即可,选择自己的也可以,但路径一定不要有中文!

验证是否安装成功?win+R,打开cmd,输入

C:\Users\gbx>git--versiongitversion2.48.1.windows.1

即安装成功,在菜单栏搜索git,选择git bash。实际上这里跟w+R cmd打开的命令窗口在用这些基础命令时效果没差别。

使用前说明一点,git命令设计哲学是“无消息就是好消息”,所以每次执行成功都会显示空行,不必惊慌。

二、常用命令

1.配置

像所有工具一样,首先设置一些信息,这里只需要

gitconfig--globaluser.name"名字"//全局设置用户名字gitconfig--globaluser.email"邮箱"//全局设置用户邮箱

全局的意思是,在你这台电脑上以后任何被git标记管理的项目,都默认为是上面用户的操作,该设置在连接远程的时候也会被使用。

但实际上这里设置的时候不加双引号也是可以的,但前提内容没有空格,下面命令同样。

已有文件的项目和空项目都可以被git标记管理,这里我以本地项目为例,因为其他教程都讲的是空项目,实际都一样。

2.常用命令

gitinit // 将当前目录标记为git管理gitadd文件名 // 将文件添加到暂存区gitcommit-m"说明"// 将当前暂存区的文件一次性全部提交到当前分支gitlog // 查看文件修改记录gitreset--hardHEAD^ // 回退到上一个版本(如果回退到指定的提交,git reflog记录了每次命令)gitreflog // 记录了每次命令cat文件名 // 查看当前文件内容,不管你有没有add,commitgitstatus // 查看当前状态gitreflog // 记录了每次命令gitdiff文件名字 // 查看git的版本和当前文件是否存在差异

因为都是命令窗口,所以cd,mkdir那些操作这里也同样使用,并且在git bash中不能使用ctrl c+v,效果不说了,可以去试试。

都是什么意思呢?以我本地的一个项目为例

首先进入项目的根目录新知识 git init

cdE:\test\ruoyi-ui // 注意这里是正斜杠/不是反斜杠\,这与windows文件资源管理器截然相反。否则会找不到

输入

gbx@LAPTOP-0PF1NI40 MINGW64 /e/test/ruoyi-ui $gitinit Initialized empty Git repositoryinE:/test/ruoyi-ui/.git/

意味着成功初始化了一个git仓库,这时候观察你的根目录,打开隐藏文件,观察到.git,还记得吗?


现在仅完成初始化,我们要将项目的所有文件交给git管理,新知识 git add和commit

gbx@LAPTOP-0PF1NI40 MINGW64 /e/test/ruoyi-ui(master)$gitadd.// 将所有文件添加到缓存区 warning:inthe working copy of'bin/build.bat', LF will be replaced by CRLF the nexttimeGit touches it warning:inthe working copy of'src/api/monitor/job.js', LF will be replaced by CRLF the nexttimeGit touches it......gbx@LAPTOP-0PF1NI40 MINGW64 /e/test/ruoyi-ui(master)$gitcommit-m"第一次提交到本地仓库"// 提交到分支[master(root-commit)511218a]第一次提交到本地仓库292files changed,26083insertions(+)create mode100644.editorconfig create mode100644.env.development create mode100644.env.production......

有没有发现一个现象,整个过程用时不会超过1s,这就是Git牛逼的地方之一,因为它追踪的是修改,而不是文件,并且不需要联网。

有关上传到缓存区,可以理解你准备要将修改的文件上传到的地方,等待一起提交。意味着你可以:

gitadd文件1gitadd文件2...gitadd文件ngitcommit-m"说明"

也可以

gitadd文件1gitcommit-m"说明"gitadd文件2gitcommit-m"说明"...

这说明缓存区的文件等待被提交,提交一次清空一次

现在输入新知识 git log

gbx@LAPTOP-0PF1NI40 MINGW64 /e/test/ruoyi-ui(master)$gitlog // 日志记录,查看从诞生到现在的所有修改记录 commit 511218a45f1b6a451d24fae0c2427f7ee3fe5433(HEAD ->master)Author: ruciyingjun<19949317733@163.com>Date: Wed Feb2623:23:452025+0800 第一次提交到本地仓库
  • 511218a45f1b6a451d24fae0c2427f7ee3fe5433 是提交号,一个哈希值,后续我们如果想回退修改需要用到它,想想看为什么不用1,2,3?在多人协作情境下,提交号很容易重复。
  • 看到我们在提交时的说明也输出了,这里的说明可以选择不写,但建议写,是必要的。
  • HEAD 指当前指向的最新提交,在这里指向master,表示你当前在master分支上。
  • 还有作者,提交日期等。

现在让我们来手动修改项目中的某个,这里我打开vscode,随意将views/index.vue中某个标题改成1234,点击保存。

再回到git bash,输入新知识 git diff

gbx@LAPTOP-0PF1NI40 MINGW64 /e/test/ruoyi-ui(master)$gitdiff// 查看git版本的文件和当前文件的差异diff--gita/src/views/index.vue b/src/views/index.vue index 92a6482..a6d98a3100644--- a/src/views/index.vue +++ b/src/views/index.vue @@ -42,7 +42,8 @@<el-col :sm="24":lg="12"style="padding-left: 50px"><el-row><el-col :span="12">-<h2>技术选型</h2>+<!--<h2>技术选型</h2>-->+<h2>1234</h2></el-col></el-row><el-row>

看到我们刚刚的修改被git识别到了,这是另一个牛逼之处,git会迅速且准确的识别到当前文件和git版本不同的地方,因为它记录的是修改,而不是文件本身!这是与其他一些版本管理工具不同的地方

现在如果我们确定要修改,那就可以git add到缓存区,等待所有修改然后git commit提进行提交。

提交后,输入git log,就可以看到每次文件修改的记录

gbx@LAPTOP-0PF1NI40 MINGW64 /e/test/ruoyi-ui(master)$gitlog commit ff59015cb5c67531c93dcda56222095d69cd2b45(HEAD ->master)Author: ruciyingjun<19949317733@163.com>Date: Thu Feb2700:12:552025+0800 修改了views/index.vue的技术选型为1234 commit 511218a45f1b6a451d24fae0c2427f7ee3fe5433 Author: ruciyingjun<19949317733@163.com>Date: Wed Feb2623:23:452025+0800 第一次提交到本地仓库

如果后悔了,我们就可以进行版本回退,新知识 git reset

gitreset--hardHEAD^ // 回退到上一个版本,几个^就回退到几个版本。gitreset--hardHEAD~n // 如果你需要回退的多,且记性还不错,指回退到上n个版本gitreset--hard提交号 // 如果你需要回退指定的版本,就需要找到它的提交号,还记得这个哈希值吗?

这里回退到上个版本,经过了这么多操作,现在让我们输入git log。

gbx@LAPTOP-0PF1NI40 MINGW64 /e/test/ruoyi-ui(master)$gitlog commit 511218a45f1b6a451d24fae0c2427f7ee3fe5433(HEAD ->master)Author: ruciyingjun<19949317733@163.com>Date: Wed Feb2623:23:452025+0800 第一次提交到本地仓库

便又回去了,当然也可以指定提交号操作,效果一样。

那现在让我们输入新知识 git reflog

gbx@LAPTOP-0PF1NI40 MINGW64 /e/test/ruoyi-ui(master)$gitreflog // 记录了每次执行成功命令 511218a(HEAD ->master)HEAD@{0}: reset: moving to HEAD^ ff59015 HEAD@{1}: commit: 修改了views/index.vue的技术选型为1234 511218a(HEAD ->master)HEAD@{2}: commit(initial): 第一次提交到本地仓库

当然我们也可以查看文件内容,也都清晰输出了新知识 cat 查看

gbx@LAPTOP-0PF1NI40 MINGW64 /e/test/ruoyi-ui(master)$catsrc/views/index.vue<template><divclass="app-container home"><el-row :gutter="20">...

当然,我们再手动修改该文件,这里我又改回去了。再查看cat 查看文件,你会发现,文件内容为你最后一次修改也就是当前状态下的内容,不管有没有用git命令进行add和commit。

ok,现在来关注新知识 git status

现在我已经修改了index.vue文件,但我并没有进行提交,输入

gbx@LAPTOP-0PF1NI40 MINGW64 /e/test/ruoyi-ui(master)$gitstatus On branch master Changes not stagedforcommit:(use"git add <file>..."to update what will be committed)(use"git restore <file>..."to discard changesinworking directory)modified: src/views/index.vue no changes added to commit(use"git add"and/or"git commit -a")

那我们再新建一个readme.txt在根目录下,再输入

gbx@LAPTOP-0PF1NI40 MINGW64 /e/test/ruoyi-ui(master)$gitstatus On branch master Changes not stagedforcommit:(use"git add <file>..."to update what will be committed)(use"git restore <file>..."to discard changesinworking directory)modified: src/views/index.vue Untracked files:(use"git add <file>..."to includeinwhat will be committed)readme.txt no changes added to commit(use"git add"and/or"git commit -a")

现在将index.vue的修改添加到暂存区,再查看,

gbx@LAPTOP-0PF1NI40 MINGW64 /e/test/ruoyi-ui(master)$gitstatus On branch master Changes to be committed:(use"git restore --staged <file>..."to unstage)modified: src/views/index.vue Untracked files:(use"git add <file>..."to includeinwhat will be committed)readme.txt

让我们总结一下git status:

  • 会显示未被git追踪的新文件
  • 修改了但还没假如缓存区的文件
  • 已经加入缓存区的文件
  • 当然,还会显示当前分支的状态,包括分支名字和远程仓库的差异。

总结

写到这里,常用的基本结束了,你一定发现了,在过程中有些命令需要添加文件名,但并没有添加依然运行成功了,有些反之也可以成功。

这个的话后者规定比较宽松,前者需要该文件(注意是文件)与.git文件夹处于并列位置才会自动识别到。但git diff不同,它会进行整个根目录的搜索。

常用的命令掌握这些其实就够了,其他的等遇到了再查也不迟。

后续再对分支,远程仓库,ssh进行补充,先写到这。

http://www.jsqmd.com/news/894377/

相关文章:

  • 城市规划师必备:如何用ArcGIS插件高效评估区域风环境(迎风面密度保姆级教程)
  • 2026采购指南:饮用水PFAS去除设备厂家汇总推荐 - 栗子测评
  • Qwen2.5-0.5B-Instruct模型下载与配置:从HuggingFace到本地部署完整教程
  • FactoryBluePrints:戴森球计划玩家的终极蓝图宝库,轻松建造宇宙工业帝国
  • 2026年靠谱的大连企业空气能供暖/空气能/大连空气能取暖销售设备供应商 - 品牌宣传支持者
  • 嵌入式工程师避坑指南:OV5640摄像头寄存器配置,这5个关键点新手最容易出错
  • 2026年4月有实力的吸塑托盘定制厂家怎么选择,胶盒吸塑/电子吸塑包装/五金吸塑包装/吸塑包装,吸塑托盘厂商哪家靠谱 - 品牌推荐师
  • 用Python和Keras从零搭建CNN:我的胃病影像识别课程设计复盘(附完整代码与数据集)
  • Lovable表单生成工具私密配置手册:解锁隐藏API、自定义渲染器注入、服务端Schema动态编译、离线PWA表单缓存策略(仅限内部技术委员会成员参考)
  • SDLPAL跨平台终极指南:在10大平台重温经典仙剑奇侠传
  • 如何优化TinyLlama-1.1B-Chat-v0.4性能:10个实用技巧提升对话质量
  • Unity UGUI事件系统保姆级拆解:从EventSystem到OnClick,你的按钮点击到底经历了什么?
  • 2026工业大风扇厂家推荐:工业吊扇生产厂家+大吊扇厂家推荐名录 - 栗子测评
  • 别再只调PID了!深入浅出聊聊IMU姿态解算中的‘互补滤波’思想
  • yolov11 安卓部署 2025最新
  • DrBERT-7GB核心功能深度解析:医学文本掩码填充与序列分类实战
  • 三步搞定iPhone抢购难题:Apple Store预约助手实战指南
  • 2026负压风机厂家推荐:车间通风降温实力派,靠谱厂商一键选 - 栗子测评
  • 从Velodyne到图像:手把手教你用Python解析KITTI点云与图像数据(附代码)
  • 主题移植实战:如何将现有Hexo博客无缝迁移至hexo-theme-solitude
  • UCF101数据集预处理避坑指南:视频转pkl文件加速读取的完整流程与代码解析
  • 别再只盯着Lp范数了:从DiffAttack看对抗攻击如何‘骗过’人眼和模型
  • 无人机飞控、平衡小车必看:用欧拉角理解‘翻滚、俯仰、偏航’到底是怎么算出来的
  • Java并发编程小技巧:CompletionService搭配线程池,处理批量异步任务更高效
  • 终极指南:如何在香橙派AIPRO上部署DeepSeek-R1-Distill-Qwen-7B量化模型
  • 为什么你的微信聊天记录总在丢失?3步永久保存每一段珍贵对话
  • Harrier-OSS-v1-0.6B的对比学习训练策略:提升多语言嵌入质量的关键
  • 2026蒸发冷省电空调厂家推荐:车间通风降温公司+车间降温设备厂家推荐精选 - 栗子测评
  • CANN/ops-nn HardShrink算子
  • Serverless AI Agent不是梦:基于Knative Eventing与Function-as-Workflow的毫秒级响应架构,已验证支撑2000+并发对话流