Git主要4个步骤理解(转载)

微机原理与接口技术第六版周荷琴课后习题答案及解析(期末重点) 第二章 1.8086/8088CPU可直接寻址多少个内存(字节)单元?多少个I/O端口?它们的外部数据总线各有多少根? 8086/8088CPU使用的是20位地址总线,因此可以直接寻址2的20次方个内存单元(即1,048,576),每个单元大小为1字节,因此可以直接寻址2的20次方个字节的内存。 8086/8088CPU有64K个I/O端口,每个端口占用1字节的地址空间,因此可以直接寻址6... 阅读详情

前言

之前有仔细学习过一遍git,但因平时工作比较少使用除“提交(git add + git commit)”,“更新(git pull)”,“推送(git push)”外,其他的版本回退等都比较少用,所以难免会有忘记的情况,正好今天再 《前端早读课》上看到这篇文章,备份一份,同时也分享给大家看一下,文章原链接

正文从这里开始

虽然 git 诞生距今已有 12 年之久,网上各种关于 git 的介绍文章数不胜数,但是依然有很多人(包括我自己在内)对于它的功能不能完全掌握。以下的介绍只是基于我个人对于 git 的理解,并且可能生编硬造了一些不完全符合 git 说法的词语。目的只是为了让 git 通俗化,使初学者也能大概了解如何快速上手 git 。同时,下面所有讨论,我们都假设只使用一个分支,也就是主分支 master 的情况,虽然这种作法并不符合 git 规范,但是现实情况中绝大部分用户是直接在 master 分支上进行工作的,所以在这里我们不去引入更加复杂的各种分支的情况,也不涉及标签 tag 的操作,只讲在最简单的主分支上如何回退。

基本概念

3个步骤

工作区 -> 暂存区 -> 本地仓库 -> 远程仓库

正常情况下,我们的工作流就是 3 个步骤,对应上图中的 3 个箭头线:

git add . 把所有文件放入 暂存区;
git commit -m "comment" 把所有文件从 暂存区 提交进 本地仓库;
git push 把所有文件从 本地仓库 推送进 远程仓库。

4个区

git 之所以令人费解,主要是它相比于 svn 等等传统的版本管理工具,多引入了一个 暂存区 ( Stage )的概念,就因为多了这一个概念,而使很多人疑惑。其实,在初学者来说,每个区具体怎么工作的,我们完全不需要关心,而只要知道有这么 4 个区就够了:

工作区( Working Area )

暂存区( Stage )

本地仓库( Local Repository )

远程仓库( Remote Repository )

5种状态

以上 4 个区,进入每一个区成功之后会产生一个状态,再加上最初始的一个状态,一共是 5 种状态。以下我们把这 5 种状态分别命名为:

未修改( Origin )

已修改( Modified )

已暂存( Staged )

已提交( Committed )

已推送( Pushed )

检查修改

了解了基本概念之后,我们来谈一谈犯错误之后如何撤销的问题。首先,我们要了解如何检查这 3 个步骤当中每一个步骤修改了什么,然后才好判断有没有修改成功。检查修改的二级命令都相同,都是 diff ,只是参数有所不同。

已修改,未暂存
git diff
首先,我们来看一下,如果我们只是简单地在浏览器里保存了一下文件,但是还没有做 git add .之前,我们如何检查有哪些修改。我们先随便拿一个文件来做一下实验:

我们在文件开头的第 2 行胡乱加了 4 个数字 1234 ,存盘,这时文件进入了 已修改 状态,但是还没有进入 暂存区 ,我们运行 git diff ,结果如下:

diff --git a/index.md b/index.md
index 73ff1ba..1066758 100644
--- a/index.md
+++ b/index.md
@@ -1,5 +1,5 @@
 ---
-layout: main
+1234layout: main
 color: black
 ---

git diff 的结果告诉我们哪些文件已经做了哪些修改。

已暂存,未提交

git diff --cached

现在我们把修改放入 暂存区 看一下。先执行 git add . ,然后执行 git diff ,你会发现没有任何结果:

这说明 git diff 这个命令只检查我们的 工作区 和 暂存区 之间的差异,如果我们想看到 暂存区 和 本地仓库 之间的差异,就需要加一个参数 git diff —cached :

diff --git a/index.md b/index.md
index 73ff1ba..1066758 100644
--- a/index.md
+++ b/index.md
@@ -1,5 +1,5 @@
 ---
-layout: main
+1234layout: main
 color: black
 ---

这时候我们看到的差异是 暂存区 和 本地仓库 之间的差异。

已提交,未推送

git diff master origin/master

现在,我们把修改从 暂存区 提交到 本地仓库 ,再看一下差异。先执行 git commit ,然后再执行 git diff —cached ,没有差异,执行 git diff master origin/master ,可以看到差异:

在这里, master 就是你的 本地仓库 ,而 origin/master 就是你的 远程仓库 , master 是主分支的意思,因为我们都在主分支上工作,所以这里两边都是 master ,而 origin 就代表远程。

撤销修改

了解清楚如何检查各种修改之后,我们开始尝试各种撤销操作。

已修改,未暂存
如果我们只是在编辑器里修改了文件,但还没有执行 git add . ,这时候我们的文件还在 工作区 ,并没有进入 暂存区 ,我们可以用:

git checkout .

或者

git reset --hard

来进行撤销操作。

可以看到,在执行完 git checkout . 之后,修改已被撤销, git diff 没有任何内容了。

git add . 的反义词是 git checkout . 做完修改之后,如果你想向前走一步,让修改进入 暂存区 ,就执行 git add . ,如果你想向后退一步,撤销刚才的修改,就执行 git checkout . 。

已暂存,未提交
你已经执行了 git add . ,但还没有执行 git commit -m “comment” 。这时候你意识到了错误,想要撤销,你可以执行:

git reset
git checkout .

或者

git reset --hard

git reset 只是把修改退回到了 git add . 之前的状态,也就是说文件本身还处于 已修改未暂存 状态,你如果想退回 未修改 状态,还需要执行 git checkout . 。

或许你已经注意到了,以上两个步骤都可以用同一个命令 git reset —hard 来完成。是的,就是这个强大的命令,可以一步到位地把你的修改完全恢复到 未修改 的状态。

已提交,未推送
你的手太快,你既执行了 git add . ,又执行了 git commit ,这时候你的代码已经进入了你的 本地仓库 ,然而你后悔了,怎么办?不要着急,还有办法。

git reset --hard origin/master

还是这个 git reset —hard 命令,只不过这次多了一个参数 origin/master ,正如我们上面讲过的, origin/master 代表 远程仓库 ,既然你已经污染了你的 本地仓库 ,那么就从 远程仓库 把代码取回来吧。

已推送
很不幸,你的手实在是太快了,你既 git add 了,又 git commit 了,并且还 git push 了,这时你的代码已经进入 远程仓库 。如果你想恢复的话,还好,由于你的 本地仓库 和 远程仓库 是等价的,你只需要先恢复 本地仓库 ,再强制 push 到 远程仓库 就好了:

git reset --hard HEAD^
git push -f

总结

以上 4 种状态的撤销我们都用到了同一个命令 git reset —hard ,前 2 种状态的用法甚至完全一样,所以只要掌握了 git reset —hard 这个命令的用法,从此你再也不用担心提交错误了。

实现labelme批量json_to_dataset方法 labelme可以帮助我们快速的实现Mask-RCNN中数据集json文件的生成,然而还需要我们进一步的将json转成dataset,可以直接在cmd中执行labelme_json_to_dataset.exe C:\Users\Administrator\Desktop\total\1.json(路径),但是这个过程需要我们一个json文件的生成,过程很慢。 一、打开abelm... 阅读详情

相关推荐

LED背光驱动电路解析:从MP3394芯片到液晶屏灯管控制

本文深入解析了以MP3394芯片为核心的LED背光驱动电路工作原理。从升压电路的能量转换到多路LED的均流控制,详细阐述了其作为液晶屏背光“大脑”的关键作用,并提供了黑屏、闪屏、亮度不均等常见故障的实战检修思路与排查方法。

agile9scrum的博客 824

git 操作流程

git 操作流程

caiji_laoshen的博客 330

保姆级拆解:HP 1312NF/CM1415打印机进纸离合器清洁与更换全记录(附B站/油管视频指路)

本文详细记录了HP 1312NF打印机进纸离合器故障的诊断与修复全过程,包括故障判断、工具准备、拆解步骤、清洁更换技巧及预防措施。特别针对离合器内部海绵老化粘连问题,提供了电工胶布和硬纸片两种实用替代方案,并附有B站/油管视频指路,帮助用户轻松完成打印机维修。

weixin_31102231的博客 377

git 操作基本四部曲操作

关于git仓库提交代码的一些操作 1.初始化git仓库,在本地生产git文件夹,建立远程仓库连接,查看连接远端地址 $ git clone url $ git init $ git remote set-url origin url // 设置远端地址 $ git push -u origin master $ git remote add origin url // or $ git remot...

qq_45272329的博客 470

使用在UE5中使用AirSim插件Eigen库头文件引用报错,出现报错的解决方式

如图所示,用红线圈出的两条头文件引用会报错,提示无法找到他们,但是可以发现的是,他们的路径书写是没有问题的。在终端中运行时候,会出现如下的报错。

GFCLJY的博客 1006

对族实例进行任意的矩阵变换,需要什么样的族?

问:一个小问题,想向您请教一下。 能不能实现一个这样的操作:创建了一个常规模型的FamilyInstance,然后知道旋转和平移的矩阵,能否根据变换矩阵更新FamilyInstance的位置,绕任意轴旋转任意角度。 请问什么样的实体才能在revit项目文件中任意旋转?貌似一般的实例只能在XY平面内旋转,并且LocationPoint中只有一个Rotation参数。答:您好,因为Revit里面的构件

我爱Revit —— BIM应用及BIM应用软件解决方案专栏 3628

git 的基本使用方法与使用流程

1、git 的基本使用方法: 第一步:window 本机电脑安装 git 软件(只需要一次) 第二步:配置环境变量(只需要一次) 安装到 D:\software\git\目录,把 bin 目录路径完整加入 Path 变量。 D:\software\git\bin 第三步:配置 git 的 config(只需要一次) git config --global user.email "you@example.com" git config --global user.name "Your Name" 查看.

鲨鱼不喝水的博客 2万+

从格雷码到多频外差:结构光相位展开实战指南(附Python仿真代码)

本文深入探讨了结构光三维测量中的相位展开技术,重点对比了格雷码和多频外差法在工业检测、逆向工程等领域的应用。通过详细的原理图解和Python仿真代码,展示了两种方法在精度、抗噪性和适用场景上的差异,为实际工程中的技术选型提供实用指南。

weixin_42535703的博客 435

关于git的使用流程

💬是的,git pull把远程更新的代码直接同步到你本地的克隆项目文件夹中(即你正在开发的那个目录),并且会同步更新你的.git本地仓库记录。如果你想查看“我到底拉了哪些代码”,可以在git pull之后运行:bash​​复制编辑它可以帮你可视化地看到各个分支的变动。如果你想,我也可以画一个 Git 的工作原理图给你,更直观地表示 pull 是怎么作用在工作目录和本地仓库的。是否需要?类型命名格式示例功能开发feature/名字-功能Bug 修复bugfix/名字-问题点UI开发。

2301_80208990的博客 2425

把审批体验做成一体化:SAP Business Workflow 里的 Secondary Method、Before Method 与 After Method

摘要:SAP Business Workflow 中,Task 的 Secondary、Before 和 After 三类方法对提升审批体验和可追溯性至关重要。Secondary Method 可自动展示辅助信息(如审批时弹出排班报表),但需注意其独立会话特性;Before Method 适合预处理和审计留痕;After Method 确保收尾动作可靠执行。三类方法按特定顺序调用,且错误不影响主流程。合理使用这些方法能减少事务码切换,增强审计能力,优化用户体验。(149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 191

基于STM32、HAL库的WF282A气压传感器 驱动程序设计

测量范围:0-2.5MPa(可根据需求选择其他量程)输出方式:I2C或SPI数字接口。温度补偿范围:-20℃~85℃。低功耗设计,适合电池供电应用。工作电压:3.3V/5V。精度:±0.1%FS。

corlin6688的博客 395

git提交代码的常用四步操作

查看本地项目的状态 git status//它会指出你所改动的文件 暂存到本地仓库 git add . //点是默认把你整个项目的文件都缓存,如果不想把所有文件都缓存就“acb”加上指定的文件名 标记 git commit -m "abc" //给你这次的更新写上备注 拉取合并代码 git pull origin master //拉取有时候会出现conflict(冲突)的问题,那就要去代码里解决它 提交代码 git push origin master //将项目推到git服务器上 小结 提交代

这是一个前端小白的博客。 307

【使用DeepSeek辅助Python接口性能自动化测试教程-实战教程】

访问DeepSeek官方网站,注册账号并获取API Key。此Key是调用DeepSeek API的必要凭证,务必妥善保管。安装时,注意勾选“Add Python to PATH”选项,以便系统能识别Python命令。确保你已安装Python 3.8或更高版本。会自动发现并执行所有以。

Dreams°的博客 2467

世上最详细的git原理解释(转载)

世上最详细的git原理解释(转载) ????0528 目录 1.提交 代码到远程仓库 2.将远程仓库代码更新到本地 3.更新到本地仓库时, 出现冲突,解决冲突 后记: 本文背景,在实际项目中使用git已有一年,发现不少同事虽然会使用常用git指令,但并不理解每个指令对应的作用原理。今天静下心总结下git 的基本理解:代码的存在区域;本文以实际项目出发,理清使用git过程中,代码的迁...

cxu123321的博客 276

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

git概念理解(转载)

最近涉及一些git,jenkins的知识,所以需要梳理一下这部分知识。本文会随时更新,会不定时增删。 --------------------------------------------------------------------------------------------------------------------------------------------- 转...

cici2013的专栏 191

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

最详细的git原理解释(转载)

世上最详细的git原理解释(转载) 原文路径是https://www.cnblogs.com/cb0327/p/5066685.html 目录 1.提交 代码到远程仓库 2.将远程仓库代码更新到本地 3.更新到本地仓库时, 出现冲突,解决冲突 后记: 正文 本文背景,在实际项目中使用git已有一年,发现不少同事虽然会使用常用git指令,但并不理解每个指令对应的作用原理...

zxl2016的博客 1188

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

IDEA中Git的配置及其使用(图文结合,步骤详解)

前言 项目管理离不开版本控制,目前主流版本控制工具大概就是SVN和Git,至于两者有啥区别这里就不详细介绍了,如果有不明白的可以上网查资料,而且现在市场上Git的使用率已经远远高于SVN。我们在用IDEA开发项目的时候如何熟练使用Git来控制代码版本呢? 一、IDEA中配置Git 使用Git当然需要先安装Git,安装过程就不详细说明了,按装好之后,打开IDEA进入设置界面(可以直接点击工具栏...

鄙人kunzhi96,感恩遇见! 11万+

【转载】GIT的特点

学习网站 http://www.hechaku.com/git/ 不理解为什么SVN合分支那么麻烦,GIT很容易? (remote) (repository (remote repository) git是一个分布式的版本控制系统 1 分布式无中心 2 断网也可以使用,有本地的私有库,本地就可以进行版本管理。甚至可以管理文档等。 3 做branch成本很低 4 适合在i...

奔跑的犀牛先生 1153

git 常用命令,简单总结易理解

参考阮老师整理的部分命令:http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html。 一、新建代码库 在当前目录新建一个Git代码库 $ git init 新建一个目录,将其初始化为Git代码库 $ git init [project-name] 下载一个项目和它的整个代码历史 $ git clone [url] 二、配置 显示当前的G...

jiahaoangle的博客 181

git pull --rebase的理解(转载)

原文地址: https://www.cnblogs.com/kungfupan/p/9967531.html 在使用git的过程中经常需要使用到git pull命令,在更新远端代码的同时如果与本地代码产生冲突了, 那么冲突的文件中就出现了需要手动合并的部分,而git pull --rebase不同的地方则是当有这些冲突存在时, git帮我们自动创建了一个新的分支,并且git告诉你接下来你要...

benniaofei18的博客 941

图解4种git合并分支方法(转载)

本文系转载原文地址:http://yanhaijing.com/git/2017/07/14/four-method-for-git-merge/ 本文作者将四种git合并分支的方法采用动图的方式进行演示,非常通俗易懂。 非常喜欢,转载在此。 如想了解更多相关文章请去原作者网站学习。 -------------------------------------原文如下------------...

悟鸣的技术博客 2万+

【git使用】深度理解 git merge合并的使用场景

因此对于 merge commit,只需要记录究竟是保留了 A 的改动还是 B 的改动即可,因此大多数情况下我们 merge commit 都是没有变更的,只是个记录。首先,关于 commit,我们可以理解为,每个 commit 会保留一个 pointer 指向它的 parent commit,并且一般我们的 commit 只有一个 parent。例如上面的例子,A 改成了 123,B 改成了 456,因此存在冲突,解决冲突的时候改成了 789,因此 merge commit 有了改动。

叮当猫的喵i 2714

真正理解 git fetch, git pull 以及 FETCH_HEAD

真正理解 git fetch, git pull 要讲清楚git fetch,git pull,必须要附加讲清楚git remote,git merge 、远程repo, branch 、 comm

w36680130的博客 790

GIT的理解和简单操作

轻量级的branch操作是git的一个根本特色。因为其他的版本管理工具是满足一般的需要的。但是对branch的操作,由于缺乏实践,暂时不深究。 GIT的操作一般是:$ cd /home/user/my_project$ git add *.c$ git add LICENSE$ git commit -m 'initial project version'如果想要可视化的界面的支持的话,除了安装...

weixin_33973609的博客 121

eclipse 如何关联git_转载:Git操作命令和管理

此次的硬核科技干货转载依然来自我们的EBCloud,请大家多多批评指正,期待与大家的交流。现代工业体系中的项目运作从来不是一个人独角戏,必定是多人协作。软件工程也不是计算机产业上古时期某个程序员两三天弄出来的小demo。这一章节我们将讨论如何使用Git参与到项目的协作中来。我试图使用非常简单的图文来向大家描述Git操作命令,每个参数都有示例并告诉大家这些参数的区别。在进行详细的说明之前,...

weixin_35217123的博客 405

Git代码管理: git remote add 命令【转载】

作者:莫奈的老旧三轮车 来源:优快云 链接:https://blog.youkuaiyun.com/qq_25458977/article/details/87875641 &n...

blog 1443
上一篇: 微信开发初体验
下一篇: Promise的理解和使用
sharpdeng
博客等级 码龄10年 4粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值