git 回滚方式
git push 命用于从将本地的分支版本上传到远程并合并。
命令格式如下:
git push <远程主机名> <本地分支名>:<远程分支名>
如果本地分支名与远程分支名相同,则可以省略冒号:
git push <远程主机名> <本地分支名>
git remote 获取远程主机名
git commit 后,没有push ,怎么撤销
如果是撤销到commit 之前,本地修改也放弃,可以
使用git reset --hard ,
但是想保留本地修改,也想撤销commit 可以使用
git reset --mixed HEAD^
除了mixed 还有其他两个参数
git reset --soft HEAD^
--soft仅仅撤销 commit
git reset --hard HEAD^
--hard 就全部撤销了
|
示例 |
分支 |
说明 |
命令 |
|---|---|---|---|
|
1 |
test01 |
撤销最近1次commit |
git revert HEAD |
|
2 |
test02 |
撤销某个commit |
git revert 3821210392184432de18b596cee58ab7924e39f9 |
|
3 |
test03 |
撤销多个连续commit |
git revert b39476b9c730d312266fe9bc7f63e795f9ba856f 3821210392184432de18b596cee58ab7924e39f9 |
|
4 |
test04 |
撤销多个非连续commit |
git revert b39476b9c730d312266fe9bc7f63e795f9ba856f 3821210392184432de18b596cee58ab7924e39f9 |
|
5 |
test05 |
重置为某个commit(不保存代码) |
git reset –hard 55d3012564e94a39f6686c0e532c0459ddc41ec4 |
|
6 |
test6 |
重置为某个commit(保存代码) |
git reset –soft 55d3012564e94a39f6686c0e532c0459ddc41ec4 |
Git撤销&回滚操作(git reset 和 get revert)
Git 的工作流
工作区:在 git add xx 之前,在自己当前分支所修改的代码内容!
暂存区:已经 git add xxx 进去,且没有执行 git commit xxx 的。
本地分支:已经 git commit -m xxx 提交到本地分支的。
远程分支:git push origin HEAD:refs/for/master HEAD 是本地,master是远程分支
代码回滚
在上传代码到远程仓库的时候,不免会出现问题,任何过程都有可能要回滚代码:
1、在工作区的代码(checkout ~ 修改工作区文件)
git checkout -- a.txt # 丢弃某个文件,或者
git checkout -- . # 丢弃全部
注意:git checkout – . 丢弃全部,也包括:新增的文件会被删除、删除的文件会恢复回来、修改的文件会回去。这几个前提都说的是,回到暂存区之前的样子。对之前保存在暂存区里的代码不会有任何影响。对commit提交到本地分支的代码就更没影响了。当然,如果你之前压根都没有暂存或commit,那就是回到你上次pull下来的样子了。
2、代码 git add 到缓存区,并未 git commit 提交(reset ~ 修改暂存区文件)
git reset HEAD .
git reset HEAD a.txt
注意:这个命令仅改变暂存区,并不改变工作区,这意味着在无任何其他操作的情况下,
工作区中的实际文件同该命令运行之前 无任何变化
3、代码 git commit 到本地分支,但没有 git push 到远程 (git reset --hard ~ commit 之后)
git log # 得到你需要回退一次提交的commit id
git reset --hard <commit_id> # 回到其中你想要的某个版本
git reset --hard HEAD^ # 回到最新的一次提交
git reset HEAD^ # 此时代码保留,回到 git add 之前
4、代码 git push 把修改提交到远程仓库 (git reset || git revert)
- (1)通过git reset是直接删除指定的commit
git log # 得到你需要回退一次提交的commit id
git reset --hard <commit_id>
git push origin HEAD --force # 强制提交一次,之前错误的提交就从远程仓库删除
- (2) 通过git revert是用一次新的commit来回滚之前的commit
git log # 得到你需要回退一次提交的commit id
git revert <commit_id> # 撤销指定的版本,撤销也会作为一次提交进行保存
- (3) git revert 和 git reset的区别
(a). git revert是用一次新的commit来回滚之前的commit,此次提交之前的commit都会被保留( 会有 两次 commit id);
(b). git reset是回到某次提交,提交及之前的commit都会被保留,但是此commit id之后的修改都会被删除 ( 只有一次 commit id)
开发过程中,场景处理:
场景一: 糟了,我刚把不想要的代码,commit到本地仓库中了,但是还没有做push操作!
撤销
上述场景一,在未进行git push前的所有操作,都是在“本地仓库”中执行的。我们暂且将“本地仓库”的代码还原操作叫做“撤销”!

场景二:彻底完了,刚线上更新的代码出现问题了,需要还原这次提交的代码!
回滚
上述场景二,已进行git push,即已推送到“远程仓库”中。我们将已被提交到“远程仓库”的代码还原操作叫做“回滚”!
注意: 对远程仓库做回滚操作是有风险的,需提前做好备份和通知其他团队成员!
如果你每次更新线上,都会打tag,那恭喜你,你可以很快的处理上述场景二的情况

二者区别:
revert是放弃指定提交的修改,但是会生成一次新的提交,需要填写提交注释,以前的历史记录都在;
reset是指将HEAD指针指到指定提交,历史记录中不会出现放弃的提交记录。
场景三:刚才我发现之前的某次提交太愚蠢了,现在想要干掉它!
情况三:需要回滚某次提交
找到要回滚的commitID
git log
git 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 commit 后,没有push ,怎么撤销
如果是撤销到commit 之前,本地修改也放弃,可以
使用git reset --hard ,
但是想保留本地修改,也想撤销commit 可以使用
git reset --mixed HEAD^
除了mixed 还有其他两个参数
git reset --soft HEAD^
--soft仅仅撤销 commit
git reset --hard HEAD^
--hard 就全部撤销了
git 回滚方式的更多相关文章
- git回滚
Git回滚的常用手法 07net01.com 发布于 4小时前 评论 传统VCS的回滚操作 对于版本控制系统VCS来说,回滚这个操作应该是个很普通也是很重要的需求. 如果你是传统VCS,比如SVN或者 ...
- Git回滚代码暴力法
Git回滚有多种方式,这里使用的是[强制提交到远程分支] 效果为:如回滚前的提交记录是 1.2.3.4,使用这种方法回滚到2,那么提交记录就变成了1.2. 操作方法: 需要在本地的Git仓库,右键选择 ...
- git merge 撤销与git 回滚
git merge提交后恢复 http://blog.psjay.com/posts/git-revert-merge-commit/ git回滚 https://www.jianshu.com/p/ ...
- git回滚命令reset、revert的区别
##使用git,总有一天会遇到下面的问题: (1)改完代码匆忙提交,上线发现有问题,怎么办? 赶紧回滚. (2)改完代码测试也没有问题,但是上线发现你的修改影响了之前运行正常的代码报错,必须回滚. 所 ...
- git回滚分支版本到指定版本
昨天提交代码时Eclipse凌乱了,本来拉了dev-20190201分支的,结果提交时竟然跑到dev分支了.为了把dev分支回滚,可以有两种方式:Eclipse和命令行. 先说简单的命令行方式,先用g ...
- Git 回滚操作之 revert
https://blog.csdn.net/HobHunter/article/details/79462899 https://blog.csdn.net/secretx/article/detai ...
- git回滚错误提交
git log //找到你要回滚的那次提交 比如:43596f6b1f57157e627c25ae7a843f60157ac52d git reset --hard HEAD~43596f6b1f57 ...
- git 回滚远程服务端master的代码
1.先备份版本 git checkout master git pull git branch master_backup //备份一下这个分支当前的情况 git push origin master ...
- GIT回滚master分支到指定tag版本
master版本上线以后一般要打一个tag备份,以防事态有变,这是一个好习惯,如果以后有问题也可以放心的回滚版本,那么怎么用tag版本覆盖mastaer呢,其实只有几个命令 1.查看分支 git br ...
随机推荐
- Docker的数据管理、网络通信和dockerfile
Docker的数据管理.网络通信和dockerfile 目录 Docker的数据管理.网络通信和dockerfile 一.Docker的数据管理 1. 数据卷 1.1 数据卷定义 1.2 数据卷配置 ...
- 【C++】近期C++特性进阶学习总结(一)
前言 C++的特性多的数不胜数,语言标准也很多,所以不定期对近期所学的C++知识进行总结,是对自身知识体系检查的良好机会,顺便锻炼一下写博客的文笔 三/五/零之法则 三之法则:如果某个类需要用户定义的 ...
- PCI Verilog IP
1 PCI IP设计 虽然PCI已经逐渐淘汰,但是还是有不少应用需要这样的接口通讯. 设计目的是为了提供基于源码的PCI IP,这样硬件就不必受限于某一个FPGA型号,也方便ASIC迁移.由 ...
- 基于双TMS320C6678 + XC7K420T的6U CPCI Express高速数据处理平台
1.板卡概述 板卡由我公司自主研发,基于6UCPCI架构,处理板包含双片TI DSP TMS320C6678芯片:一片Xilinx公司FPGA XC7K420T-1FFG1156 芯片:六个千兆网口( ...
- Android SugarORM(3)
Android Sugar ORM (3) Android Sugar ORM 查询 我们在此之前介绍了一些关于Sugar ORM的简单操作, 现在我们就查询来具体说一下 Sugar ORM中的fin ...
- blender获取任意位置建筑白模
在前端3d可视化开发过程中有时会需要到白模,特别是gis开发,可能会用到各个城市的白模,其实可以使用Blender配合BlenderGis插件来提取osm中的白模.具体步骤如下: 安装软件 在此处下载 ...
- 理解OAuth2.0协议和授权机制
无论是自然资源还是互联网上的资源,需要控制使用权与被使用权,以保护资源的安全.合理的使用和有效的管控. 项目中,我们需要控制的是用户资源,既要保证有效用户的合理使用,又要防范非法用户的攻击.如此,如何 ...
- 防世界之Web_ics-06
题目: 进入实验环境,发现其他页面啥都没有,题目描述说报表中心数据被删,打开报表中心看看 进入数据中发现url上有?id=1的字样就要注意,敏感起来.id是数值,可以尝试爆破一下. 打开burpsui ...
- 使用已有流量进行RFC2544测试—信而泰网络测试仪实操
一.测试说明 先创建流量,将流量运行起来,流量正常.再使用创建的流量进行RFC2544测试,可以避免因为配置原因流量不通,影响RFC 2544测试. 而且创建流量的时候,可以编辑报文,例如增加TCP/ ...
- 【剑指 Offer II 001. 整数除法】同leedcode 29.两数相除
剑指 Offer II 001. 整数除法 解题思路 在计算的时候将负数转化为正数,对于32位整数而言,最小的正数是-2^31, 将其转化为正数是2^31,导致溢出.因此将正数转化为负数不会导致溢出. ...