git 撤销commit

如果不小心commit了一个不需要commit的文件,可以对其进行撤销。

先使用

1git log

日志信息显示如下:

1WARNING: terminal is not fully functional
2commit 197634d80f1aca2fefd4bb93ffb64bbf2af5bc1e
3Author: /****hidden****/
4Date:   Thu Jun 27 14:23:52 2013 +0800
5 
6    新增PHP框架模块,此处采用 yii 框架
7 
8commit f093b6ed512f761a346e2e5c0f00230e448c217c
9Author: /****hidden****/
10Date:   Thu Jun 27 14:05:23 2013 +0800
11 
12    创建 master,以生成 HEAD 仓

本次由于添加了错误的yii框架版本,因此需要将第二次的提交强制撤销。

找到需要回退的那次commit的 哈希值,

1f093b6ed512f761a346e2e5c0f00230e448c217c

执行

1git reset --hard f093b6ed512f761a346e2e5c0f00230e448c217c

使用上面的命令进行回退

上述命令执行成功之后,会彻底返回到回退到的版本状态,新发生的变更将会丢失。
对于部分发生了变更,但是变更部分的文件夹存在未提交的文件可能导致目录非空而删除失败,此时需要自行处置

完成之后,使用 –force 或 -f 参数强制push(本地分支和远程分支都是 develop)

1git push develop develop --force

如果你使用 TortiseGit 工具的话,它应该是不具备 reset 支持的,至少我没找到。所以 reset 操作只能在命令行模式下进行。

如果你工作在 SSH 的公钥模式下,命令行操作可能比较麻烦,我暂时不知道如何将公钥带进来提交,因为我的 gitolite服务不允许密码的,呵呵
查找了一些疑似文档,可能需要将自己的公钥添加到用户目录下的.ssh的认证文件中,未测试~~~
此时可以使用 TortiseGit 工具选择 push,并在弹出的窗口选择 force 的复选框,提交对应的分支或者全部提交,如下图:
QQ截图20130627163141

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值