Git撤销&回滚操作(git reset 和 get revert)_其它综合

来源:脚本之家  责任编辑:小易  

git revert 是生成一个新的提交来撤销某次提交,此次提交之前的commit都会被保留。git reset 是回到某次提交,提交及之前的commit都会被保留,但是此次之后的修改都会被退回到暂存区。git revert 和 git reset的区别:git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。在回滚这一操作上看,效果差不多。但是在日后继续merge以前的老版本时有区别。因为git revert是用一次逆向的commit“中和”之前的提交,因此日后合并老的branch时,导致这部分改变不会再次出现,但是git reset是之间把某些commit在某个branch上删除,因而和老的branch再次merge时,这些被回滚的commit应该还会被引入。git reset 是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容和要revert的内容正好相反,能够抵消要被revert的内容www.zgxue.com防采集请勿采集本网。

git的工作流

reset 到 merge 前的版本,然后再重做接下来的操作,要求每个合作者都晓得怎么将本地的 HEAD 都回滚回去: $ git checkout 【行merge操作时所在的分支】 $ git reset --hard 【

工作区:即自己当前分支所修改的代码,git add xx 之前的!不包括 git add xx 和 git commit xxx 之后的。

files,你也可以用git reset 撤销所有暂存区域文件。(操作对象是HEAD)git checkou 并且文件被添加到暂存区域。git checkout HEAD -- files 回滚到复制最后一

暂存区:已经 git add xxx 进去,且未 git commit xxx 的。

执行evert命令时要求工作树必须是干净的. git revert用一个新提交来消除一个历史提交所做的任何修改. revert 之后你的本地代码会回滚到指定的历史版本,这时你再 git push 既可

本地分支:已经git commit -m xxx 提交到本地分支的。

git revert 放弃某次提交 git revert 之前的提交仍会保留在git log中,而此次撤销会做为一次新的提交。 git reset 是回滚到某次提交 git reset --soft 此次提交之后的修改会被退回到

代码回滚

回退的某个版本,点击右侧的“roll back”按钮。 这时在下方就会提示一个“UNDO”的撤销操作,代表你已经成功回退到某个版本了。 当然你可以直接在命令行使用 git reset

在上传代码到远程仓库的时候,不免会出现问题,任何过程都有可能要回滚代码:

浏览器测试或功能测试),您可以检查以确保网站在用户实际在网站上执行操作时的行为 然后使用其他解决方案再次尝试,而不是必须加密手动撤消它并修复所有错误。Git是这

1、在工作区的代码

了,更更逆天的是可以设置git commit之前必须通过这些检查。 当然具体操作需要根据 git直接从生产环境拉代码更新,因为git,svn等可以很方便的撤销某次更新,回滚到某个位置

git checkout -- a.txt # 丢弃某个文件,或者git checkout -- . # 丢弃全部

注意:git checkout – . 丢弃全部,也包括:新增的文件会被删除、删除的文件会恢复回来、修改的文件会回去。这几个前提都说的是,回到暂存区之前的样子。对之前保存在暂存区里的代码不会有任何影响。对commit提交到本地分支的代码就更没影响了。当然,如果你之前压根都没有暂存或commit,那就是回到你上次pull下来的样子了。

2、代码git add到缓存区,并未commit提交

git reset HEAD . 或者git reset HEAD a.txt

这个命令仅改变暂存区,并不改变工作区,这意味着在无任何其他操作的情况下,工作区中的实际文件同该命令运行之前无任何变化

3、git commit到本地分支、但没有git push到远程

git log # 得到你需要回退一次提交的commit idgit reset --hard <commit_id> # 回到其中你想要的某个版或者git reset --hard HEAD^ # 回到最新的一次提交或者git reset HEAD^ # 此时代码保留,回到 git add 之前

4、git push把修改提交到远程仓库

1)通过git reset是直接删除指定的commit

git log # 得到你需要回退一次提交的commit idgit reset --hard <commit_id>git push origin HEAD --force # 强制提交一次,之前错误的提交就从远程仓库删除

2)通过git revert是用一次新的commit来回滚之前的commit

git log # 得到你需要回退一次提交的commit idgit revert <commit_id> # 撤销指定的版本,撤销也会作为一次提交进行保存

3) git revert 和 git reset的区别

- git revert是用一次新的commit来回滚之前的commit,此次提交之前的commit都会被保留;

- git reset是回到某次提交,提交及之前的commit都会被保留,但是此commit id之后的修改都会被删除

开发过程中,你肯定会遇到这样的场景:

场景一:

糟了,我刚把不想要的代码,commit到本地仓库中了,但是还没有做push操作!

场景二:

彻底完了,刚线上更新的代码出现问题了,需要还原这次提交的代码!

场景三:

刚才我发现之前的某次提交太愚蠢了,现在想要干掉它!

撤销

上述场景一,在未进行git push前的所有操作,都是在“本地仓库”中执行的。我们暂且将“本地仓库”的代码还原操作叫做“撤销”!

情况一:文件被修改了,但未执行git add操作(working tree内撤销)

git checkout fileNamegit checkout .

情况二:同时对多个文件执行了git add操作,但本次只想提交其中一部分文件

$ git add *$ git status# 取消暂存$ git reset HEAD <filename>

情况三:文件执行了git add操作,但想撤销对其的修改(index内回滚)

# 取消暂存git reset HEAD fileName# 撤销修改git checkout fileName

情况四:修改的文件已被git commit,但想再次修改不再产生新的Commit

# 修改最后一次提交 $ git add sample.txt$ git commit --amend -m"说明"

情况五:已在本地进行了多次git commit操作,现在想撤销到其中某次Commit

git reset [--hard|soft|mixed|merge|keep] [commit|HEAD]

具体参数和使用说明,请查看:Git Pro深入浅出(二)中的重置揭秘部分

回滚

上述场景二,已进行git push,即已推送到“远程仓库”中。我们将已被提交到“远程仓库”的代码还原操作叫做“回滚”!注意:对远程仓库做回滚操作是有风险的,需提前做好备份和通知其他团队成员!

如果你每次更新线上,都会打tag,那恭喜你,你可以很快的处理上述场景二的情况

git checkout <tag>

如果你回到当前HEAD指向

git checkout <branch_name>

情况一:撤销指定文件到指定版本

# 查看指定文件的历史版本git log <filename># 回滚到指定commitIDgit checkout <commitID> <filename>

情况二:删除最后一次远程提交

方式一:使用revert

git revert HEADgit push origin master

方式二:使用reset

git reset --hard HEAD^git push origin master -f

二者区别: revert是放弃指定提交的修改,但是会生成一次新的提交,需要填写提交注释,以前的历史记录都在; reset是指将HEAD指针指到指定提交,历史记录中不会出现放弃的提交记录。

情况三:回滚某次提交

# 找到要回滚的commitIDgit loggit revert commitID

删除某次提交

git log --oneline -n5

git rebase -i "commit id"^

注意:需要注意最后的^号,意思是commit id的前一次提交

git rebase -i "5b3ba7a"^

在编辑框中删除相关commit,如pick 5b3ba7a test2,然后保存退出(如果遇到冲突需要先解决冲突)!

git push origin master -f

通过上述操作,如果你想对历史多个commit进行处理或者,可以选择git rebase -i,只需删除对应的记录就好。rebase还可对 commit 消息进行编辑,以及合并多个commit。

到此这篇关于Git撤销&回滚操作(git reset 和 get revert)的文章就介绍到这了,更多相关Git撤销&回滚操作内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网!

由于太多人问怎么撤销 merge 了,于是 git 官方出了这份教程,表示在 git 现有的思想体系下怎么达到撤销 merge 的目标。方法一,reset 到 merge 前的版本,然后再重做接下来的操作,要求每个合作者都晓得怎么将本地的 HEAD 都回滚回去:$ git checkout 【行merge操作时所在的分支】$ git reset --hard 【merge前的版本号】方法二,当 merge 以后还有别的操作和改动时,git 正好也有办法能撤销 merge,用 git revert:$ git revert -m 【要撤销的那条merge线的编号,从1开始计算(怎么看哪条线是几啊?)】 【merge前的版本号】Finished one revert.[master 88edd6d] Revert "Merge branch 'jk/post-checkout'" 1 files changed, 0 insertions(+), 2 deletions(-)这样会创建新的 commit 来抵消对应的 merge 操作,而且以后 git merge 【那个编号所代表的分支】 会提示:Already up-to-date.因为使用方法二会让 git 误以为这个分支的东西都是咱们不想要的。方法三,怎么撤销方法二:$ git revert 【方法二撤销merge时提交的commit的版本号,这里是88edd6d】Finished one revert.[master 268e243] Revert "Revert "Merge branch 'jk/post-checkout'"" 1 files changed, 2 insertions(+), 0 deletions(-)这样就行了,可以正常 merge 了,不过可能会有很多冲突噢!!$ git merge jk/post-checkoutAuto-merging test.txtMerge made by recursive. test.txt | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)最后的最后,还是觉得顶上那些都麻烦爆了。前端天天用 WebStorm 写代码的看过来: WebStorm 右键点击项目文件或文件夹,有一个:Local History -> Show History点开后出现一个窗口,可以看到所有的本地改动。找到合适的那份,按左上角那个:Revert按钮,也就是个紫色的弯曲的小箭头就回去了。在文件量不大的时候十分管用,强烈推荐内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • git如何撤销commit的方法(未push)
  • git使用小技巧之回滚与撤销详解
  • 基于git的常用撤销技巧与解决冲突方法(推荐)
  • git 撤销操作、删除文件和恢复文件
  • git里多种撤销操作的最佳方法
  • git 删除分支和回滚的实例详解
  • 简单谈谈git中的回滚操作
  • 使用curl命令行模拟登录wordpress的方法
  • 新手程序员编程必不可少的工具
  • 浅析mmdetection在windows10系统环境中搭建过程
  • 字符编码笔记 ascii,unicode和utf-8
  • win10环境下使用hyper-v进行虚拟机创建的教程(图解)
  • 滑动验证码的设计与理解
  • 伪静态技术介绍与优缺点分析(较完整篇)
  • rpc、rmi、soap的区别详解
  • iso-8859-1 、latin-1 西欧编码介绍及应用
  • eventstore文件存储设计详解
  • Git怎样撤销一次分支的合并Merge
  • git revert和git reset的区别
  • Git怎样撤销一次分支的合并Merge
  • git reset head^怎么回去
  • Git怎样撤销一次分支的合并Merge
  • git:如何从另一个分支复制目录中的所有文件
  • git 代码上传后,怎么回退版本
  • git reset rebase和 revert的区别
  • github怎么查找fork并回滚
  • 怎样才能成为一名前端开发人员呢?
  • 如何编写高质量的python程序
  • myEclipse如何将消失的代码还原
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全javascriptasp.netphp编程ajax相关正则表达式asp编程jsp编程编程10000问css/htmlflex脚本加解密web2.0xml/rss网页编辑器相关技巧安全相关网页播放器其它综合dart首页git如何撤销commit的方法(未push)git使用小技巧之回滚与撤销详解基于git的常用撤销技巧与解决冲突方法(推荐)git 撤销操作、删除文件和恢复文件git里多种撤销操作的最佳方法git 删除分支和回滚的实例详解简单谈谈git中的回滚操作使用curl命令行模拟登录wordpress的方法新手程序员编程必不可少的工具浅析mmdetection在windows10系统环境中搭建过程字符编码笔记 ascii,unicode和utf-8win10环境下使用hyper-v进行虚拟机创建的教程(图解)滑动验证码的设计与理解伪静态技术介绍与优缺点分析(较完整篇)rpc、rmi、soap的区别详解iso-8859-1 、latin-1 西欧编码介绍及应用eventstore文件存储设计详解最新idea2020注册码永久激活(激活intellij idea2020永久破解,亲测intellij idea激活码获取方法(i删除svn三种方法delsvn(windows+c/s和b/s两种架构的概念、区别和网址(url)支持的最大长度是多少5个linux平台程序员最爱的开发工url中斜杠/和反斜杠\的区别小结提示“处理url时服务器出错”和“解释执行和编译执行的区别?matlab读取串口数据并显示曲线的实现示例gbk字符编码(字符集)缺陷导致web安全漏基于token的身份验证之jwt基础教程使用selenium自动控制浏览器找不到chrome微信公众平台开发——群发信息ie条件语句 ie hack大全vscode添加git和svn的方法示例几道和「黑洞照片」那种海量数据有关的算使用阿里大于(大鱼)平台进行发送手机验证
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved