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前的所有操作,都是在“本地仓库”中执行的。我们暂且将“本地仓库”的代码还原操作叫做“撤销”!

 
情况一.png
场景二:彻底完了,刚线上更新的代码出现问题了,需要还原这次提交的代码!
回滚

上述场景二,已进行git push,即已推送到“远程仓库”中。我们将已被提交到“远程仓库”的代码还原操作叫做“回滚”!

注意: 对远程仓库做回滚操作是有风险的,需提前做好备份和通知其他团队成员!

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

 
情况二.png

二者区别:

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 回滚方式的更多相关文章

  1. git回滚

    Git回滚的常用手法 07net01.com 发布于 4小时前 评论 传统VCS的回滚操作 对于版本控制系统VCS来说,回滚这个操作应该是个很普通也是很重要的需求. 如果你是传统VCS,比如SVN或者 ...

  2. Git回滚代码暴力法

    Git回滚有多种方式,这里使用的是[强制提交到远程分支] 效果为:如回滚前的提交记录是 1.2.3.4,使用这种方法回滚到2,那么提交记录就变成了1.2. 操作方法: 需要在本地的Git仓库,右键选择 ...

  3. git merge 撤销与git 回滚

    git merge提交后恢复 http://blog.psjay.com/posts/git-revert-merge-commit/ git回滚 https://www.jianshu.com/p/ ...

  4. git回滚命令reset、revert的区别

    ##使用git,总有一天会遇到下面的问题: (1)改完代码匆忙提交,上线发现有问题,怎么办? 赶紧回滚. (2)改完代码测试也没有问题,但是上线发现你的修改影响了之前运行正常的代码报错,必须回滚. 所 ...

  5. git回滚分支版本到指定版本

    昨天提交代码时Eclipse凌乱了,本来拉了dev-20190201分支的,结果提交时竟然跑到dev分支了.为了把dev分支回滚,可以有两种方式:Eclipse和命令行. 先说简单的命令行方式,先用g ...

  6. Git 回滚操作之 revert

    https://blog.csdn.net/HobHunter/article/details/79462899 https://blog.csdn.net/secretx/article/detai ...

  7. git回滚错误提交

    git log //找到你要回滚的那次提交 比如:43596f6b1f57157e627c25ae7a843f60157ac52d git reset --hard HEAD~43596f6b1f57 ...

  8. git 回滚远程服务端master的代码

    1.先备份版本 git checkout master git pull git branch master_backup //备份一下这个分支当前的情况 git push origin master ...

  9. GIT回滚master分支到指定tag版本

    master版本上线以后一般要打一个tag备份,以防事态有变,这是一个好习惯,如果以后有问题也可以放心的回滚版本,那么怎么用tag版本覆盖mastaer呢,其实只有几个命令 1.查看分支 git br ...

随机推荐

  1. linux内核可以接受的参数 | Linux kernel启动参数 | 通过grub给内核传递参数

    在Linux中,给kernel传递参数以控制其行为总共有三种方法: 1.build kernel之时的各个configuration选项. 2.当kernel启动之时,可以参数在kernel被GRUB ...

  2. NoSQL之Redis配置与优化

    NoSQL之Redis配置与优化 目录 NoSQL之Redis配置与优化 一.关系数据库和非关系数据库 1. 关系型数据库 2. 非关系型数据库 3. 非关系型数据库产生背景 4. 关系型数据库和非关 ...

  3. 帆软报表(finereport) 组合地图 保持系列名和值居中

    自定义JavaScript代码,使用HTML解析 function(){ var name = this.name; var total = '<div style="width:10 ...

  4. Java中Integer 和 int的区别

    基本概念的区分: 1.Integer 是 int 的包装类,int 则是 java 的一种基本数据类型 2.Integer 变量必须实例化后才能使用,而int变量不需要 3.Integer 实际是对象 ...

  5. INTERSPEECH 2014 | 1-Bit Stochastic Gradient Descent and its Application to Data-Parallel Distributed Training of Speech DNNs

    这篇文章之前也读过,不过读的不太仔细,论文中的一些细节并没有注意到.最近为了写开题报告,又把这篇论文细读了一遍.据笔者了解,这篇论文应该是梯度量化领域的开山之作,首次使用了梯度量化技术来降低分布式神经 ...

  6. IDEA自带Http Client替代Postman校验接口

    对比Postman的优势 对于数据格式变动可以更为敏锐的观察到.生成的接口请求文件可以同步到代码库,支持多人使用. 使用说明 创建请求文件 使用IDEA,在项目的Scratches下创建Http Re ...

  7. JDK动态代理为什么必须要基于接口?

    原创:微信公众号 码农参上,欢迎分享,转载请保留出处. 前几天的时候,交流群里的小伙伴抛出了一个问题,为什么JDK的动态代理一定要基于接口实现呢? 好的安排,其实要想弄懂这个问题还是需要一些关于代理和 ...

  8. 攻防世界 MOBILE RemeberOther

    解题思路: 下载后解压可以得到一个apk文件和word文件.查看word文件,里面写了比较简单的一句话,未获有有效信息.(后续会讲到这个word文档的使用) word内容 运行apk文件,如图: ap ...

  9. RENIX 软件如何进行IP地址管理——网络测试仪实操

    本文主要介绍了BIGTAO网络测试仪如何通过RENIX软件进行IP地址管理.文章分为五部分内容,第一部分介绍了如何通过机框显示屏查看IP地址,之后几部分分别介绍了机框按钮修改.机框接显示器/键盘修改. ...

  10. OJ教程--递归

    弄清楚递归的基本思想,递归函数的运行过程,暂且不考虑是否使用递归在效率方面的差异. 题目 1: 数的组合问题.从1,2,-,n中取出m个数,将所有组合按照字典顺序列出.如n=3,m=2时,输出:12 ...