廖雪峰的GIT教程的笔记
学习目标新公司需要Git进行版本管理学习加记录首先要安装Git这个百度这里就不讲学习内容一、建立仓库仓库就是保存你上传文件的地方你可以简单理解成一个目录这个目录里面的所有文件都可以被Git管理起来每个文件的修改、删除Git都能跟踪以便任何时刻都可以追踪历史或者在将来某个时刻可以“还原”要存的东西就得放到仓库里本地版1.新建一个文件夹先在本地电脑建一个文件夹作为仓库打开Git Base软件;但是可以看到 Git Base一开始的操作地址是默认的但是接下来的操作都需要在这个文件夹的地址里操作这时候就有两种方法把Git Base的操作地址改成新建的仓库文件夹1.因为Git最开始是为了Linux的所以可以直接使用Linux的cd命名去到指定文件夹可以看到就到了新建的文件夹了2.直接在新建文件夹鼠标右键有一个 open Git Base Here,点击这个就会在当前文件夹打开Git Base2. Git init这个语句就是设置当前文件夹为仓库Git init回车之后会自动出现Initialized empty Git repository in D:/GitTest1/.git/提示ok了二、 添加到库1.git add在文件夹里随便创建两个文件因为add这个指令可以添加多个文件回车之后没有回应2.git commit -mxxx上面的add还只是上传到暂存区这个就是把暂存区里的都上传到库里xxx就是本次上传写的注释最好写清楚这次上传的文件都更新了什么回车之后会返回[master (root-commit) e2d4fa2] 第一次添加了两个文件2 files changed, 2 insertions()create mode 100644 test.txtcreate mode 100644 test1.txt返回内容解析2 file changed2个文件被改动我们新添加的2个文件2 insertions插入了两行内容两个文件各一行总共两行。3. git status可以获取当前仓库的状态比如这时候我们修改了文件但是没有提交add就可以看到提醒有一个文件改了但是没有上传文件名字就是红色如果仓库里干干净净如果刚把文件ADD到暂存区暂存区里有东西文件名字就是绿色4. git diff使用git status 可以知道改了没有上传但是不能知道详细的改了什么这时候就需要diffdifference的缩写指令可以看到加了两个two如果是删除的话会是-开头单diff对比的是工作区和暂存区的版本如果要看刚改的工作区文件或者是暂存区的文件和本地仓库的做对比呢在Git中使用大写的HEAD来表示当前本地仓库的版本使用可以使用git diff HEAD来对比还有一个比较使用的就是比较两个提交过的版本的区别git diff 版本号1 版本号2对比两个历史提交版本之间的差异# 比较两次提交之间所有改动 git diff 68c6698 3ad4539三、版本回退1、工作区、暂存区、本地仓库在回退之前要明白三个使用到的区域1.工作区工作区是你写代码的地方在这个地方写完之后Git只知道你改了东西但是不会帮你记录这个代码只保存在你本地2.暂存区这个是Add之后就会先存在暂存区3.本地仓库在你使用Commit把暂存区的文件提交之后就是提交到这里2.git log获取提交的所有记录这样太长了可以使用 Git log --oneline来获取短的日志信息这些log日志每次提交记录的这一大串比如e2d4fa260b2d6ce6a541e1aabad0ad0ad77a77c8这就是版本号后面要想回退到某个版本就需要这个版本号log看完之后按q退出日志界面3.git show这个就是展示当前仓库的文件可以使用HEAD查看当前版本还有注释信息文件内容就是这一次新加了什么内容HEAD^查看上一个版本以此类推4.git reset首先要知道在git中用大写的HEAD来表示仓库当前的版本要是是一个版本就是HEAD^再上一个就是HEAD^^,再往前比如说往前100个要是角标就太多了所以是HEAD~100;回退有三种方式1.--soft这种回退是把当前仓库里的版本回退工作区和暂存区的不变而且会把回退的版本重新返回到暂存区里就是如果你是commit的备注没写对的话就可以使用这个重新把文件回退到暂存区再使用commit重新写备注可以看到使用之后再去查看状态就发现文件回到暂存区里了2.--mixed这个回退是除了工作区其他的都回退可以看到会之后再查看状态就是只改了本地文件没有Add有没有commit的状态这个有简写状态也就是这个是系统默认的git reset --mixed HEAD git reset HEAD;还可以指定文件回退git reset HEAD test.txt这个适合就是写错了某个文件并且上传到了暂存区或者上传到了仓库就可以指定文件回退到工作区3.--hard这个回退就是彻底回退了包括本地文件都会一起回退5 git reflog回退使用HEAD来回退的时候要知道具体的第几次的版本有的时候不太记得了这时候就可以直接使用要回退的版本号来回退但是你也不知道之前回退了的版本号了啊这时候你可能想用log来查看log日志但是回退之后的log也会一起删除就只剩下最开始的两次提交了这时候就要使用reflogreflog可以查到本地电脑上90天的操作这时候就可以配合reset回退删掉的版本log由于删除前看看要回退到哪个版本reflog适合回退错了要回退这个回退6.git restore 撤销 / 恢复文件专用命令这个是专门用来操作 暂存区和本地文件的1.git restore 文件名用于回退没有上传到暂存区的本地文件使用回退工作区之后2.git restore --staged 文件这个是把文件从暂存区退回工作区取消暂存可以用于rm删除之后恢复3.git restore --source版本号 文件从历史提交恢复文件尤其是恢复具体一个文件的时候就用这个四 删除1 git rm这个就是删除本地文件而且会把删除这个文件删除到暂存区这时候还可以通过 restore恢复但是恢复的是之前add或者commit了的版本要先$ git restore --staged test.txt来把删除之后上传到暂存区取消之后再restore来回退本地操作如果rm删除之后还commit了这时候就只能从历史版本里恢复就要先reflog知道版本号再用restore五、远程仓库远程仓库可以是公司的还可以是自己在github上创建自己来测试学习下面的就全是在github上测试的5.1 git push这是把本地仓库的推送到远程仓库上origin的话是默认代表远程仓库的代号这个是可以自己再去重新设置的把本地仓库里所有的东西都推送上去 git push -u origin master使用上面这个指令不只是会全部推送还会把本地的master和远程仓库里的master联系起来如果不联系起来的话push会报错要重新联系之后再改了推送具体的分支 $ git push origin master git push origin dev5.2 git clone 【地址】这个是从远程仓库克隆到本地$ git clone gitgithub.com:michaelliao/gitskills.git5.3 分支分支就相当于从某一个时间节点分裂出一个平行宇宙两个平行宇宙拥有一模一样的历史、一模一样的代码在公司就是有一个主的master分支里面负责放已经稳定的版本其他人要改或者添加新东西就先clone主的master分支再在自己电脑上创建一个自己的工作dev分支这样改东西哪怕是改错了或者该丢了都不影响主的master分支自己测试完了觉得ok了再把dev分支合并到主分支上这样dev改的内容就到主分支上了5.3.1 分支图像化在前面可以知道commit之后就是添加了一个时间节点HEAD就是最新版本其实HEAD指向的不是当前分支的最新版本而是指向当前分支由分支指针来指向最新版本再创建一个分支devHEAD就是指向最新这个分支dev指针这时候在当前分支comiit一个新版本就是dev指针往前这时候要合并了在git里就是把master指针指向当前最新的操作HEAD也指向master指针就好了这就是为什么在合并指针之后如果不删除的话dev分支会一直保持当前状态删掉的话就是删掉dev指针5.3.2 git switch -c创建分支的话旧版本是git checkout最新的是git switch -c name可以看到创建分支之后里面就是当前分支名字注意基于一个分支创造另外一个分支的话要在第一个分支下创造5.3.3 git switch name切换分支要去哪个分支就填哪个分支的名字5.3.4 git branch这个是查看当前有哪些分支,*name就是代表当前是哪个分支5.3. 5分支注意的问题可以看到在dev分支下改了文件注意要是分支上改了文件但是没有commit再切换到主分支也会一起带过去现在就是在dev上改的可以看到切换到master后一起带过去了文件改了没commit5.3.6 git merge在dev分支修改了文件可以看到在master分支上并没有还是在修改前的版本这时候就需要合并注意要把a分支合并到b分支上就得先切换到b分支注意上面的合并是快速合并5.3.7 git restore -d name不需要的分支可以通过这个删除5.3.8 合并冲突如果在两个分支对同一个文件都有修改提交这时候再合并就会报错了这时候在报错的文件里会自动把不一样的地方画出来HEAD的部分就是当前分支的就是分界线,dev就是另外一个分支的可以看出两个对比前三行都一样是第四行开始不一样了master分支的是threeworkingchangedev的changeworking这时候就看你要哪个版本的了保留需要的版本把标志和不需要的都删掉比如要master的就改完之后就按照流程add再commit六、git stash临时去别的分枝干活现在手头这个分支的活又没干完没办法提交比如working到一半要临时去主分支帮忙改bug可以看到当前分支的还没干完所以没有提交1. git stash save “xxx”可以添加一些注释方便等一下回来知道现在改到哪里了这时候再看工作区就是干净的了可以切换到别的分支干活了之后就可以回到主分支再开个新分支去修改bug了还可以使用ls来看看分支有哪些文件修改提交好了就回到主分支把修改bug分支上改好的合并2. git stash pop之后再回到之前工作的分支但是之前的工作区已经被储存起来了这时候就需要pop来把之前存的拿出来可以看到还是之前工作的内容3.git stash apply恢复储存出来pop还可以使用applypop是恢复之后会把储存记录删掉apply不会apply和pop都可以恢复指定的储存记录这个需要git stash list来看有多少储存记录git stash apply stash{1}git stash pop stash{1}一些疑问1.指令为什么有些是-有些是---的后面跟着的是一个字母一些简写--后面跟着的完整的单词git commit -m;git reset --hard ;学习时间提示这里可以添加计划学习的时间例如周一至周五晚上 7 点—晚上9点周六上午 9 点-上午 11 点周日下午 3 点-下午 6 点学习产出提示这里统计学习计划的总量例如技术笔记 2 遍CSDN 技术博客 3 篇习的 vlog 视频 1 个

相关新闻

HTML基础与实战:从标签到语义化开发

HTML基础与实战:从标签到语义化开发

1. HTML基础概念解析HTML(HyperText Markup Language)作为构建网页的基础语言,其核心功能在于定义文档的结构和内容。不同于CSS负责样式或JavaScript实现交互,HTML专注于内容的语义化组织。这种分工明确的架构使得Web开发能够保持…

2026/7/21 8:59:17阅读更多 →
Zepp Life自动刷步数终极指南:如何轻松实现健康数据管理

Zepp Life自动刷步数终极指南:如何轻松实现健康数据管理

Zepp Life自动刷步数终极指南:如何轻松实现健康数据管理 【免费下载链接】mimotion 小米运动刷步数(微信支付宝)支持邮箱登录 项目地址: https://gitcode.com/gh_mirrors/mimo/mimotion 你是否厌倦了每天手动记录步数的繁琐&#xff1…

2026/7/21 8:59:17阅读更多 →
DevC++ 64位OpenGL环境配置:MinGW-w64与FreeGLUT实战指南

DevC++ 64位OpenGL环境配置:MinGW-w64与FreeGLUT实战指南

1. 项目概述:为什么要在DevC上折腾64位OpenGL? 如果你是一个刚开始接触计算机图形学,或者想用C写点带窗口和3D效果小程序的初学者,OpenGL几乎是绕不开的名字。但很多朋友,包括当年的我,在第一步“搭环境”上…

2026/7/21 8:57:17阅读更多 →
Meteor Base扩展开发教程:如何添加第三方API集成功能

Meteor Base扩展开发教程:如何添加第三方API集成功能

Meteor Base扩展开发教程:如何添加第三方API集成功能 【免费下载链接】base A starting point for Meteor apps. 项目地址: https://gitcode.com/gh_mirrors/base2/base Meteor Base是一个功能强大的Meteor应用起始模板,为开发者提供了构建现代We…

2026/7/21 17:22:09阅读更多 →
WPS AI批量处理提速秘籍:用1行指令替代200次点击,实测单日处理5000+PDF/Word文件

WPS AI批量处理提速秘籍:用1行指令替代200次点击,实测单日处理5000+PDF/Word文件

更多请点击: https://kaifayun.com 第一章:WPS AI批量处理提速秘籍:用1行指令替代200次点击,实测单日处理5000PDF/Word文件 WPS AI 提供的命令行接口(CLI)与自动化宏能力,让传统手动批处理彻底…

2026/7/21 17:22:09阅读更多 →
AP-0316 全功能 DSP 语音模组硬核技术解析

AP-0316 全功能 DSP 语音模组硬核技术解析

做嵌入式音频开发的工程师,大概率都踩过声学调试的无底坑: 全双工通话回音啸叫、车间 / 户外嘈杂环境人声被噪声淹没、麦克风靠近喇叭就断话、模拟音频传输干扰底噪爆表、不同项目要重新搭音频 ADC/DAC/ 功放外围、拾音距离无法灵活适配场景…… 传统分立…

2026/7/21 17:22:09阅读更多 →
声源定位新方案:AR1106如何让设备听懂发言人在哪

声源定位新方案:AR1106如何让设备听懂发言人在哪

在嘈杂的会议室里,多人同时发言时,谁的声音被采集?远距离语音交互时,如何判断说话人的方向?在智能机器人应用中,怎样让机器知道"谁在跟我说话"?这些场景背后,都依赖一项关…

2026/7/21 17:22:09阅读更多 →
generator-electron 项目结构详解:从模板到生产应用的完整指南

generator-electron 项目结构详解:从模板到生产应用的完整指南

generator-electron 项目结构详解:从模板到生产应用的完整指南 【免费下载链接】generator-electron Scaffold out an Electron app boilerplate 项目地址: https://gitcode.com/gh_mirrors/ge/generator-electron generator-electron 是一款强大的 Electron…

2026/7/21 17:22:09阅读更多 →
广州PMP考生专属福利!才聚考场免费送麦当劳早午餐!

广州PMP考生专属福利!才聚考场免费送麦当劳早午餐!

对于每一位项目管理人来说,PMP考试不仅是一场专业知识的检验,更是数月辛勤备考的最终“决战”。考试当天清晨,匆忙赶赴考场、来不及吃早餐,或者在考场外随便对付一口——这几乎是绝大多数考生的共同记忆。但在广州,有一…

2026/7/21 17:20:08阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/21 0:51:49阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/21 0:51:49阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/21 0:51:49阅读更多 →
Windows+macOS 通用 OpenClaw 部署流程,内置依赖一键启动智能桌面助手

Windows+macOS 通用 OpenClaw 部署流程,内置依赖一键启动智能桌面助手

📌教程适配:OpenClaw v2.7.9 | 兼容 Windows10/11、macOS 双系统 📖前言 当下各类本地 AI 工具层出不穷,多数产品仅能完成文字问答交互,很难直接操控电脑执行实际操作。OpenClaw,业内常称小龙虾 AI&#…

2026/7/21 0:01:46阅读更多 →
Codex 接入后 Bug 反增?复盘从个人演示到团队协作的“流程陷阱”

Codex 接入后 Bug 反增?复盘从个人演示到团队协作的“流程陷阱”

聊《一次Codex项目复盘,问题最后出在流程而不是模型》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。摘要先把这篇文章的目标说清楚:看完之后,你应该能判断这件事值不值得做&…

2026/7/21 0:01:46阅读更多 →
手把手搓一个五子棋游戏,零代码也能当“游戏开发者”

手把手搓一个五子棋游戏,零代码也能当“游戏开发者”

大家好,还是我。前几期带大家做了心情日记本和可视化大屏,后台有朋友留言:“能不能教点好玩的?我想做游戏,但一行代码都不会。”行,这期就安排。今天的目标:从零做一个五子棋游戏。 带AI对战、三…

2026/7/21 0:03:46阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/20 22:51:39阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/20 18:51:18阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/20 18:51:18阅读更多 →