廖雪峰的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:20 阅读更多 →
Zepp Life自动刷步数终极指南:如何轻松实现健康数据管理

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

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

2026/7/21 8:59:20 阅读更多 →
终极DS4Windows指南:5分钟让PS4手柄在Windows上完美运行 [特殊字符]

终极DS4Windows指南:5分钟让PS4手柄在Windows上完美运行 [特殊字符]

终极DS4Windows指南:5分钟让PS4手柄在Windows上完美运行 🎮 【免费下载链接】DS4Windows Like those other ds4tools, but sexier 项目地址: https://gitcode.com/gh_mirrors/ds/DS4Windows 还在为Windows游戏无法识别你的PS4手柄而烦恼吗&#x…

2026/7/21 8:59:20 阅读更多 →

最新新闻

技术团队中的工具人:从问题定位到自动化解决方案

技术团队中的工具人:从问题定位到自动化解决方案

那天下午,我盯着屏幕上一行行日志,试图定位一个诡异的线上问题。问题本身不复杂,但定位过程像在开一把生锈的锁——你知道锁芯就在那里,但就是找不到那个恰到好处的角度和力道。团队里有人提议直接重启服务,有人建议加…

2026/7/22 4:26:28 阅读更多 →
Java开发者转型C++实战指南:跨越思维鸿沟,掌握高性能编程

Java开发者转型C++实战指南:跨越思维鸿沟,掌握高性能编程

1. 转型动机与核心挑战:为什么是C,以及你需要跨越的鸿沟 最近几年,我身边从Java转向C的朋友和同事越来越多。这背后其实有个挺有意思的现象:一方面,Java生态依然庞大,岗位需求稳定;另一方面&…

2026/7/22 4:26:28 阅读更多 →
VRChat OSC开源项目实战:从协议原理到故障排查全指南

VRChat OSC开源项目实战:从协议原理到故障排查全指南

1. 项目概述:当VRChat遇上OSC,开源社区的“连接”艺术如果你在VRChat社区里混迹过一段时间,或者热衷于折腾虚拟化身(Avatar)的交互,那你大概率听说过OSC(Open Sound Control)这个词。…

2026/7/22 4:26:28 阅读更多 →
TI DSP EMIFA中断与NAND Flash ECC寄存器实战配置指南

TI DSP EMIFA中断与NAND Flash ECC寄存器实战配置指南

1. 项目概述与核心价值在嵌入式系统开发,尤其是基于德州仪器(TI)C6000系列DSP或类似高性能微控制器的项目中,外部存储器接口(EMIFA)和NAND Flash控制器是连接外部世界、扩展系统能力的关键桥梁。然而&#…

2026/7/22 4:26:28 阅读更多 →
Windows下Python依赖编译:VS2017安装配置与实战指南

Windows下Python依赖编译:VS2017安装配置与实战指南

1. 项目概述:为什么需要Visual Studio Community 2017来编译Python依赖?如果你在Windows上鼓捣Python,尤其是涉及到需要编译原生扩展(C/C写的那些.pyd或.so文件)的库时,大概率会遇到一个让人头疼的报错&…

2026/7/22 4:26:28 阅读更多 →
Django+Xadmin在线教育平台CentOS 6.5部署指南

Django+Xadmin在线教育平台CentOS 6.5部署指南

1. 项目背景与核心需求在线教育平台作为当前互联网教育的主流形态,对技术架构的稳定性和可维护性有着极高要求。这个基于DjangoXadmin的在线教育平台项目,需要部署到CentOS 6.5生产环境,并确保Python 3.5.1环境的正确配置。这种组合在实际部署…

2026/7/22 4:25:28 阅读更多 →

日新闻

TI DSP系统配置模块SYSCFG详解:中断机制与主设备优先级配置实战

TI DSP系统配置模块SYSCFG详解:中断机制与主设备优先级配置实战

1. 项目概述与SYSCFG模块的核心价值在嵌入式系统,尤其是像TI C6000系列这样的高性能DSP开发中,我们常常会与芯片手册里那些密密麻麻的寄存器打交道。很多开发者可能更关注算法实现、内存优化或者外设驱动,但对于一个稳定、高效的系统而言&…

2026/7/22 0:00:26 阅读更多 →
微信Server酱:高到达率的应急通知方案实践

微信Server酱:高到达率的应急通知方案实践

1. 为什么我们需要"最次"的通知方案? 在数字化协作环境中,消息通知系统的重要性不言而喻明。但现实情况是,企业级通知方案往往需要复杂的API对接(如企业微信、钉钉、飞书),个人开发者的小项目又经…

2026/7/22 0:00:26 阅读更多 →
甲方要的“简洁“PPT,到底是简洁还是省事?

甲方要的“简洁“PPT,到底是简洁还是省事?

甲方说"简洁一点",乙方听到的是"少做几页"。甲方说"不要太复杂",乙方理解成"别放图表了"。结果交过去,甲方说"我说的简洁不是这个意思"。"简洁"这个词在PPT语境里,是…

2026/7/22 0:00:26 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/7/21 8:25:39 阅读更多 →

月新闻