如何高效撤销Git管理的文件在各种状态下的更改

一、背景

  企业中我们一般采用分布式版本管理工具git来进行版本管理,在团队协作的过程中,我们难免会遇到误操作,需要撤销更改的情况,那么我们怎么高效的进行撤销修改呢?对于还未提交到暂存区的代码怎么高效撤销更改呢?对于已经提交到暂存区的代码,怎么取消add操作?对于已经提交到本地仓库,还没有提交到远程仓库的代码,怎么进行高效撤销更改呢?还有对于已经提交到远程仓库的代码,如何进行高效的撤销更改呢?那我们本文就来一一解决这些棘手的问题!

二、各种状态高效撤销方案

  1. 文件还未提交到暂存区,只是在工作目录中修改了,想要撤销
git checkout [--] file-name (撤销单个文件修改)
git checkout [--] . (撤销当前工作空间中所有文件的修改)
  1. 文件已经add到暂存区,但还没有提交到本地仓库,想要撤销(即取消add操作)
git reset [HEAD] file-name (撤销暂存区中的单个文件)
git reset [HEAD] . (撤销当前暂存区中的所有内容)
  1. 文件已经提交到本地仓库,但还没有push到远程仓库,想要撤销
git log (查看并记录下要回滚到的commitId)
git reset [--soft | --mixed |--hard] commitId (回退版本)
  1. 文件已经提交到远程仓库,想要撤销
git log (查看并记录下要回滚到的commitId)
git reset --hard commitId (回退版本)
git push -f origin branch-name

或
git revert commitId(回退版本)
git push origin branch-name

   注: reset和revert有着本质的区别,reset直接删除了指定的commit,而revert是用一次新的commit来覆盖要回滚的commit.

      reset 是在正常的commit历史中,删除了指定的commit,这时 HEAD 是向后移动了,而 revert 是在正常的commit历史中再commit一次,只不过是反向提交,他的 HEAD 是一直向前的.

        如果在日后现有分支和历史分支需要合并的时候,reset 恢复部分的代码依然会出现在历史分支里.但是revert 方向提交的commit 并不会出现在历史分支里.  

三、总结

  通过本文我们就知道如何对不同状态的git管理的文件进行撤销修改的操作,这样即使我们不小心操作了什么东西,我们也能很快的进行回滚,就是要做高效的程序猿~

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏技术博文

常用 Git 命令

转载自:http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html;感谢作者辛苦撰写! 一般来说,日...

30860
来自专栏流媒体

Git常用命令

Git的设置文件为.gitconfig,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。

10020
来自专栏二次元

[笔记]Git常用命令大全

继上一次后,抽空整理了个比较全的Git常用命令,找到了一张非常棒的导图,非常高清的(1759*3162)。

12540
来自专栏赵俊的Java专栏

Git 常用命令

19050
来自专栏阮一峰的网络日志

常用 Git 命令清单

我每天使用 Git ,但是很多命令记不住。 一般来说,日常使用只要记住下图6个命令,就可以了。但是熟练使用,恐怕要记住60~100个命令。 ? 下面是我整理的常...

31150
来自专栏柠檬先生

git 常用命令

git status 查看工作区和暂缓区状态 git add 将工作区放入暂缓区 git commit 将暂缓区放入 版本区 git add 把修改过的文件全部...

228100
来自专栏Java成神之路

Git_学习_09_指定某些文件不上传

注:git add 命令会将文件加入暂存区,git commit 会将暂存区中文件提交到git本地仓库,git push 会将本地仓库中新添加的文件上传到远程分...

61620
来自专栏mwangblog

git文件状态,暂存与提交

14840
来自专栏carven

git分支管理

git用了挺久,但是对分支管理还是不熟悉。用这篇博客来记录一下常用的分支管理命令 1.首先绑定远程仓库

13300
来自专栏Albert陈凯

2018-07-20 如何将 SVN 迁移至 GIT 并保留所有历史记录

原文地址: http://pcme.info/blog/2013/09/06/how-to-migration-svn-to-git/

30260

扫码关注云+社区

领取腾讯云代金券