git的一些撤销操作

继承薄雾
• 阅读 1066

前言

在用开发项目的时候,经常会写着写着会发现写错的时候,人生没有后悔药,但是git有啊,大不了从头再来嘛。

git的一些撤销操作

代码还没有存到暂存区

当我们修改了一个文件,还没有执行git add操作的时候,发现写错的时候.

➜  xiaoyan_es_static git:(master) ✗ cat README.md
es日志统计查询
我写错了,不想要这行了

我们可以使用如下命令,回到最后一次提交的版本

git checkout -- <file>...

执行完git checkout -- README.md 命令后

➜  xiaoyan_es_static git:(master) ✗ cat README.md
es日志统计查询

代码存储到了暂存区

当我们一不小心将代码存入了暂存区

➜  xiaoyan_es_static git:(master) ✗ git add .
➜  xiaoyan_es_static git:(master) ✗ git status
On branch master
Your branch is up-to-date with 'origin/master'.

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   README.md

我们可以使用如下命令,回到最后一次提交的版本

git reset HEAD <file>...

执行完命令后如下所示

➜  xiaoyan_es_static git:(master) ✗ cat README.md 
es日志统计查询
这行写错了,但是已经存到暂存区了%                                                                                                                                                                         ➜  xiaoyan_es_static git:(master) ✗ git status              
On branch master
Your branch is up-to-date with 'origin/master'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   README.md

no changes added to commit (use "git add" and/or "git commit -a")

代码已经commit了

当我们修改的代码已经commit了,我们只需要执行

➜  xiaoyan_es_static git:(master) git reset --hard HEAD^

上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。

代码已经push到远程了

少年,你怎么这么冲动呢

git的一些其它操作

当我们需要删除暂存区或分支上的文件, 同时工作区也不需要这个文件了, 可以使用

git rm file_path
git commit -m 'delete somefile'
git push

当我们需要删除暂存区或分支上的文件, 但本地又需要使用, 只是不希望这个文件被版本控制, 可以使用

git rm --cached file_path
git commit -m 'delete remote somefile'
git push

当我们对文件或者文件夹执行过chmod操作时,执行git diff会出现类似' old mode xxx new mode xxx',这个时候我们只需要执行如下命令即可

git config --add core.filemode false

这样你的所有的git库都会忽略filemode变更了~

更多文章欢迎关注博客:https://www.zplxjj.com 和公众号
git的一些撤销操作

点赞
收藏
评论区
推荐文章
Stella981 Stella981
4年前
Git配置SSH Key的时候提示密钥无效
错误提示:Keyisinvalid.YoumustsupplyakeyinOpenSSHpublickeyformat翻译:密钥无效。必须提供OpenSSH公钥格式的密钥操作步骤1.生成公钥sshkeygentrsaC"GitHub账号的注册邮箱"2.进入路径vim~/.ssh/i
Stella981 Stella981
4年前
Git pull的时候遇到问题
转载:https://www.jianshu.com/p/7b1c58e0a9ef(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.jianshu.com%2Fp%2F7b1c58e0a9ef)使用git从远程pull代码时报错:error:Thefollowing
Stella981 Stella981
4年前
Crawler 不需要写代码的爬虫 不需要写正则的爬虫
CrawlerV1.0.01.代码还没有优化2.框架结构很简单3.部分功能需要你们给我需求,我后期添加测试(http://git.oschina.net/puguoan/Crawler操作指南)操作指南
Stella981 Stella981
4年前
IntelliJ IDEA(八) :git的使用
项目管理离不开版本控制,目前主流版本控制工具大概就是SVN和Git,至于两者有啥区别这里就不详细介绍了,如果有不明白的可以上网查资料,后期如果有机会我再开篇栏目细说,而且现在市场上Git的使用率已经远远高于SVN。我们在用IDEA开发项目的时候如何熟练使用Git来控制代码版本呢?一、安装Git使用Git当然需要先安装Git,安装过程就
Wesley13 Wesley13
4年前
Git开发实战(三)之撤销操作(reset、checkout)
一、使用reset命令撤销本地仓库的提交     1.我在README文件中,写一点东西,然后提交;aibin@XiaoAibinMINGW64~/Desktop/test_git(master)$vimREADMEaibin@XiaoAibinMINGW64~/Desktop/test_
Stella981 Stella981
4年前
Git学习
已有项目添加到Git操作流程:1.在一个目录下执行gitinit,会将当前目录创建为git仓库gitinit2.执行gitadd.把当前目录下所有文件添加到仓库gitadd.3.把添加的文件提交到本地仓库gitcommitm'Firstcommit'4.添加remote及验证remote。
Stella981 Stella981
4年前
Git的操作
第一部分:基础操作1.跳转到制定目录: cd/e/workFile/gitTest/2.初始化本地仓库: gitinit3.查看本地仓库状态: gitstatus4.新建文件夹: mkdirtest5.新建文件: touchtest.txt6.删除文件: gitrmtest
Stella981 Stella981
4年前
Modelsim仿真一些简单问题
1.在学习时序逻辑的时候,我们明白寄存器赋值总有一拍的延迟但是有的时候仿真的时候会发现会没有延迟,比如下面这段代码对应的modelsim仿真。源代码代码如下:!(https://oscimg.oschina.net/oscnet/90dc0d40ac35ad54cae504f85c1ccc29b16.png)
Stella981 Stella981
4年前
SpringBoot项目打成jar包后上传文件到服务器 目录与jar包同级问题
看标题好像很简单的样子,但是针对使用jar包发布SpringBoot项目就不一样了。当你使用tomcat发布项目的时候,上传文件存放会变得非常简单,因为你可以随意操作项目路径下的资源。但是当你使用SpringBoot的jar包发布项目的时候,你会发现,你不能像以前一样操作文件了。当你使用FilefilenewFile()的时候根本不知道这个
Easter79 Easter79
4年前
SpringBoot项目打成jar包后上传文件到服务器 目录与jar包同级问题
看标题好像很简单的样子,但是针对使用jar包发布SpringBoot项目就不一样了。当你使用tomcat发布项目的时候,上传文件存放会变得非常简单,因为你可以随意操作项目路径下的资源。但是当你使用SpringBoot的jar包发布项目的时候,你会发现,你不能像以前一样操作文件了。当你使用FilefilenewFile()的时候根本不知道这个
Wesley13 Wesley13
4年前
Git中代码冲突的解决方式
使用Git管理代码,在进行代码提交的时候,如果出现了冲突该怎么办呢,下面就两种常见的冲突给出了解决方法,希望对大家有所帮助。冲突1:当你commit以后,在执行gitpullrebase的时候出现冲突,请按如下步骤解决:1 找到冲突文件,解决冲突2 执行gitaddxxx(xxx为冲突文件全路径)3 执行git