撤销本地提交-每天三分钟玩转Git (5)

简介: 撤销本地提交-每天三分钟玩转Git (5)

第 5 篇

撤销本地提交


上一章我们一起入门学习了git的基本概念和git基础操作,包括提交和同步代码、使用分支、出现代码冲突的解决办法、紧急保存现场和恢复现场的操作。几乎已经足够我们使用Git参加协作开发了。但是在开发的过程中难免会出错,万一一不小心提交提交了不可饶恕的东西,难说会让我们丢掉工作,那怎么办呢。下面让我们一起来diss老板。


先说一句蠢话来diss老板


如果你发现刚刚的操作一不小心commit了,所幸你还没有推送到远程仓库,你可以用reset命令来撤消你的这次提交。


reset命令的作用:重置HEAD(当前分支的版本顶端)到另外一个commit。


我们来创建一个文件,并附带提交信息[+]骂了我的boss,达到下图的效果



925aeb648a71f5c3955501f082916f70.png



我们使用以下命令达到这样的效果:

fc5d348dd5037f110510265a78613c7b.jpg

创建to_boss.txt文件,并向其写入了my boss is a bad guy!


git add然后status查看新文件已经加入跟踪


git commit提交了这次的修改


撤消了本次提交


好了,刚刚我们“不小心”diss了我们的老板,要是被发现就完了,所幸还没有push,要快点撤消这些提交,再拍下马屁才行。


先撤销掉现在的提交达到下图的效果


d692142aa440bde9446467ad81316d70.png

我们使用以下命令达到这样的效果:



efb23d96b0dce10fa6480f6fb2b85926.jpg

git reset --soft head^撤消了本次提交,将工作区恢复到了提交前但是已经add的状态


将to_boss.txt的内容改成了my boss is a good boy!


好了,我们现在改成怕马屁的话了,虽然我并不赞成大家给老板拍马屁,但是刚刚骂老板的话实在把人吓得不轻。我们赶快把他提交掉吧,一会老板看见估计要给我加工资了。


修改to_boss.txt的内容,同时创建一个提交信息为[+]夸了我的boss的提交,如下图



7d34d944d2de35ca9f8900bf42953d11.png


我们使用以下命令达到这样的效果:


438a10e49d65eff1680fad23c8ed559a.jpg


add然后commit提交

好了,有惊无险,这就是撤消commit的操作。

我们的撤消当前提交的时候往往不希望我们此次提交的代码发生任何丢失只是撤消掉commit的操作,以便我们继续修改文件。


2ff8f89659893d5900d84c7b4954fbe9.png


正常我们想达到上图的效果,宝贵的代码放回到暂存区,如果我们是想直接不要了这次commit的全部内容的任何修改那就把git reset --soft head^改成git reset --hard head^,这样你本地修改就彻底丢掉了(一定要小心啊,不然代码白写了),如果真用了想找回来怎么办?我们后面【救命的后悔药】一节会和大家详细讨论。


当然了,你只要开心,不加soft或hard参数也是安全的(相当于使用了--mixed参数),只不过是撤消以后你的本次修改就会回到add之前的状态,你可以重新检查以后再做修改和commit也可以。


小结


通过今天的三分钟,我们学会了如下命令


git reset --soft head^ 软撤销,head^是指当前commit,可以改成任意commit id


git reset --hard head^ 硬撤销,彻底丢掉这次提交的全部修改


git reset 不加参数,本次修改就会回到add之前的状态

相关文章
|
开发工具 git
Git撤销使用方法
介绍 撤销是指恢复先前的状态或操作,以便回退或取消更改,Git提供了多种方式来进行撤销,撤销对文件的修改、撤销暂存的修改、撤销提交、撤销合并等; 详细教程 1、撤销对已经暂存区的文件的修改 这个命令会将指定文件从暂存区中移除,但保留对工作目录中文件的修改。这相当于撤销了对文件的暂存操作。 git reset HEAD <文件名> 2、撤销当前分支的提交 它是用于将当前分支的 HEAD 指针移动到前一个提交,并丢弃指定数量(<num>)的最近提交,包括这些提交所引入的更改。 当你意识到最近的一次合并操作引入了错误或不必要的更改时,你希望撤销这些更改并回到合并之前的状态。当你想要回滚最近的几个提交
121 0
|
开发工具 git
git --- git撤销commit(未push)
git --- git撤销commit(未push)
177 0
|
6月前
|
开发工具 git
GIT | 基础操作 | 初始化 | 添加文件 | 修改文件 | 版本回退 | 撤销修改 | 删除文件(二)
GIT | 基础操作 | 初始化 | 添加文件 | 修改文件 | 版本回退 | 撤销修改 | 删除文件(二)
|
6月前
|
算法 安全 Linux
GIT | 基础操作 | 初始化 | 添加文件 | 修改文件 | 版本回退 | 撤销修改 | 删除文件(一)
GIT | 基础操作 | 初始化 | 添加文件 | 修改文件 | 版本回退 | 撤销修改 | 删除文件(一)
|
6月前
|
开发工具 git
git撤销推送到远端仓库的提交commit信息
git撤销推送到远端仓库的提交commit信息
|
开发工具 git 索引
如何撤销 Git 添加命令?
如何撤销 Git 添加命令?
113 1
如何撤销 Git 添加命令?
|
开发工具 git
git:一些撤销操作
git:一些撤销操作
90 0
|
开发工具 git
Git不提交文件的ChangeList使用和撤销本地commit的代码
Git不提交文件的ChangeList使用和撤销本地commit的代码
134 0
|
人工智能 开发工具 git
Git撤销之世上真有后悔药
Git撤销之世上真有后悔药
|
Shell 开发工具 git
【Git】 从暂存区撤销指定文件的添加
提交前,git add 后,如何从暂存区撤销已添加的单个或多个文件
75 0