【git】git撤销与回滚
git的撤销与回滚在平时使用中还是比较多的,比如说我们想将某个修改后的文件撤销到上一个版本,或者是想撤销某次多余的提交,都要用到git的撤销和回滚操作。撤销分两种情况,一个是commit之前,一个是commit之后,下面具体看下这两种情况。
一.git commit之前
未添加到暂存区的撤销(没有git add)
添加进暂存区的撤销(git add后)
$ git status
On branch test_git
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: new_src/app/Http/Controllers/Frontend/KyHome/KyHomeUnitTrait.php
modified: new_src/app/Http/Controllers/Frontend/KyHome/KyHomeWordFilterTrait.php
可以通过
git checkout -- filename来撤销修改
git checkout -- new_src/app/Http/Controllers/Frontend/KyHome/KyHomeWordFilterTrait.php
再次查看文件状态发现选择的文件已经成功被撤销了。
$ git status
On branch test_git
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: new_src/app/Http/Controllers/Frontend/KyHome/KyHomeUnitTrait.php
如果想将多个文件一次性撤销可以用
git checkout -- .
上面是 未添加到暂存区的撤销
下面是添加到暂存区的
$ git status
On branch test_git
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: new_src/app/Http/Controllers/Frontend/KyHome/KyHomeApp.php
modified: new_src/app/Http/Controllers/Frontend/KyHome/KyHomeComment.php
$ git add -A
$ git status
On branch test_git
Changes to be committed: 已经添加暂存区了
(use "git reset HEAD <file>..." to unstage) modified: new_src/app/Http/Controllers/Frontend/KyHome/KyHomeApp.php
modified: new_src/app/Http/Controllers/Frontend/KyHome/KyHomeComment.php
从暂存区撤销
$ git reset HEAD new_src/app/Http/Controllers/Frontend/KyHome/KyHomeApp.php
Unstaged changes after reset:
M new_src/app/Http/Controllers/Frontend/KyHome/KyHomeApp.php
如果想一次性将所有暂存区文件撤销回来,还是上面的命令,不过不用加文件路径。
$ git reset HEAD
Unstaged changes after reset: M new_src/app/Http/Controllers/Frontend/KyHome/KyHomeApp.php
M new_src/app/Http/Controllers/Frontend/KyHome/KyHomeComment.php
二.git commit之后
如果当commit提交后想撤销的话,这就需要revert命令。git revert 命令是撤销某次操作,而在此次操作之前和之后的提交记录都会保留。
先修改了几个文件然后commit 再用git log查看提交记录。
commit 2842c8065322085c31fb7b8207b6296047c4ea3
Author: songguojun <songgj@kingnet.sh>
Date: Sat Apr :: + add content
然后使用revert 后面跟上git提交的commitid
git revert 2842c8065322085c31fb7b8207b6296047c4ea3
Revert "add content" This reverts commit 2842c8065ffe2085c31fb7b8207b6296047c4ea3. # Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch test_git
# Changes to be committed:
# modified: new_src/app/Http/Controllers/Frontend/KyHome/KyHomeApp.php
# modified: new_src/app/Http/Controllers/Frontend/KyHome/KyHomeComment.php
然后在推送到远端更新远程仓库代码,修改的文件就撤销回来了。注意的是revert奇数次生效,偶数次又回到之前的修改状态。比如一个文件内容是a,那么修改为ab,revert后文件变成了a,如果在revert后文件又还原成ab了。
还有就是如果想回到之前某个版本,可以用reset命令,可以回退到某次提交,那该提交之后的提交都会回滚,不过这种覆盖是不可逆的,之前的提交记录都没有了。所以平时开发中尽量注意,避免使用reset。
用法:
git reset --hard commit_id
- --hard – 强制将缓存区和工作目录都同步到你指定的提交
git reset --hard fdeb212a5418cc8e31f32d63cf197550297468ec
HEAD is now at fdeb212 增加mysql端口配置
然后在提交到远端覆盖。
【git】git撤销与回滚的更多相关文章
- Git的撤销与回滚
1,commit 之前的撤销 未添加至暂存区的撤销(add 之前) git status git checkout . 已添加至暂存区的撤销(add 之后,有或者没有commit操作都可以执行) gi ...
- git的几种回滚 git revert 和 git reset的区别
git的几种回滚 git revert 和 git reset的区别:强烈建议:对HEAD不熟的话最好不要用HEAD,直接用commitID吧,我遇到的问题:reset HEAD~1之后,可能是别人提 ...
- git远程代码库回滚(webstorm下)
git远程代码库回滚(webstorm下) 1. 场景 添加了一个文件[file-for-test.js]到git的控制下 进行了三次修改,并分别进行了三次commit,最后进行了一次push git ...
- git第八节---git 撤销和回滚
# git 撤销 1. 未添加进暂存区的撤销 --未git add 2.添加进暂存区的撤销-- 已git add 未git commit 未添加进暂存区的撤销命令:git checkout -- ...
- Git撤销&回滚操作
开发过程中.你肯定会遇到这种场景: 场景一: 糟了.我刚把不想要的代码.commit到本地仓库中了.可是还没有做push操作! 场景二: 彻底完了.刚线上更新的代码出现故障了.须要还原这次提交的代码! ...
- Git撤销、回滚操作
git的工作流 工作区:即自己当前分支所修改的代码,git add xx 之前的!不包括 git add xx 和 git commit xxx 之后的. 暂存区:已经 git add xxx 进去, ...
- Git reset head revert 回滚
Overview 涉及Git一些日常操作 :) 基础知识 <Pro Git>至少了解branch,commit的概念,及基本的原理 Git常用魔法 存档:master代码回滚方法 我是QA ...
- [转]Git 代码撤销、回滚到任意版本(当误提代码到本地或master分支时)
两种情况(场景) 情况一 代码还只在本地,未push到运程仓库,想把代码还原到上一次commit的代码,此时操作为代码撤销 解决方案: 1 git reset [--hard|soft|mi ...
- Git 代码撤销、回滚到任意版本(当误提代码到本地或master分支时)
转自https://www.cnblogs.com/lwh-note/p/9639835.html 两种情况(场景) 情况一 代码还只在本地,未push到运程仓库,想把代码还原到上一次com ...
随机推荐
- Python深入类和对象
一. 鸭子类型和多态 1.什么是鸭子类型: 在程序设计中,鸭子类型(英语:Duck typing)是动态类型和某些静态语言的一种对象推断风格."鸭子类型"像多态一样工作,但是没有继 ...
- sed 双引号 单引号的区别
a="abcd" b="abc" sed -i '/$a/ s/$/$b/' test.a 我想在test.a中匹配以”abcd“开头的行,然后在行尾加入”ab ...
- linux重装系统,如何保存硬盘中的内容
以前没有太关注重装系统如何保留下硬盘中的内容.但是最近有一些文件在重装系统后确实需要继续保留下来,于是花了点时间了解下磁盘分区相关的东东. 参考 http://blog.csdn.net/openn/ ...
- peewee 事物 回滚
peewee 事物 回滚 #!/usr/bin/env python # coding=utf-8 from peewee import * db = MySQLDatabase(host='123. ...
- Delphi中带缓存的数据更新技术
一. 概念 在网络环境下,数据库应用程序是c/s或者是多层结构的模式.在这种环境下,数据库应用程序的开发应当尽可能考虑减少网络数据传输量,并且尽量提高并发度.基于这个目的,带缓存的数据更新技术应运而生 ...
- ABP 番外篇-容器
一. @using YD.CloudTimetable.Web.Areas.AppAreaName.Startup @{ ViewBag.CurrentPageName = AppAreaNamePa ...
- 一、Dev单元格
二.获取表格数据 int selectRow = gridView1.GetSelectedRows()[0]; string id = this.gridView1.GetRowCellValue( ...
- SQL Server 一张图让你秒懂联合表查询
- Mybatis常见问题总结
1.大于号.小于号在sql语句中的转换 使用mybatis 时sql语句是写在xml文件中,如果sql中有一些特殊的字符的话,比如< ,<=,>,>=等符号,会引起xml格式的 ...
- Nginx http反向代理流程Proxy_pass模块
L:88 反向代理代码示列 server { listen ; server_name shop**.com.cn; location /{ proxy_pass http://test/www; p ...