git-svn提交修改出错时的恢复办法
来源:互联网 发布:软件怎么发布 编辑:程序博客网 时间:2024/05/01 21:31
目前ThinkNet还在使用一个集中的SVN版本库,接下来我们将逐渐将代码库迁移到git服务器上。
我本地已经开始使用GIT作为主要的版本管理工具,使用GIT-SVN进行本地版本库和服务器版本库的同步。一直使用的很好。前两天因为网络不稳定,导致有一次dcommit代码中途发生网络连接错误。并且git无法自动回滚到提交前的状态。查看本地代码库时,发现自己的一大批修改不翼而飞。顿觉天昏地暗~
git的稳定性和安全性在版本管理工具中中颇受好评,理应不出现这样的问题。一通Google和尝试后,成功的恢复了所有的修改。现将修改记录如下,方便遇到相同问题的同学参考。
-=-=-=-=-=-=-=-=-=-=- 补救方法正文的分割线 -=-=-=-=-=-=-=-=-=-=-=-=-=-
打开你本地代码库根目录下的‘.git/log/HEAD’文件,在其中找到你本地的最后一次提交,并记录下这次提交的hash值。如下图中红色16进制数字部分:
00f741d223a3db473be53cb1a88a8a3309184f64 dbfbc9b3ef9328ee4c63520d241beb8e027df779 Simon Yang <simon@thinknet.com> 1360842004 +0800 commit: 修复查找环的算法,确保两点间有多条线相连或一个点形成闭环的情况下算法错误。
dbfbc9b3ef9328ee4c63520d241beb8e027df779 33376856ff7a30bd008e67351fa99eed3f6de949 Simon Yang <simon@thinknet.com> 1360890032 +0800 commit: 调整查找环的算法,使用边的集合表示环,而不是点。因为两个点之间可能有多个边相连.
58ae5dddaf114c08a7b834e1702d2729c2d64952 358247740c329c5edc8f764080f40e1aad93ca6f Simon Yang <simon@thinknet.com> 1360942854 +0800 commit: 修改判断浏览器的方法,避免QT JS崩溃。
358247740c329c5edc8f764080f40e1aad93ca6f 0041469dc09a815dd7b0164b7043f1224954fab4 Simon Yang <simon@thinknet.com> 1361018342 +0000 checkout: moving from master to 0041469dc09a815dd7b0164b7043f1224954fab4^0
f0eced5c872b2eda5d4c8bec6d1a3314f2fe4bab 008f69e8e4d0c9ebba9e9bfb07c0e48e7178cf09 Simon Yang <simon@thinknet.com> 1361018367 +0000 rebase: 修复查找环的算法,确保两点间有多条线相连或一个点形成闭环的情况下算法错误。
008f69e8e4d0c9ebba9e9bfb07c0e48e7178cf09 a238ce2fcba10c777c2a79867dca94c5d3068db9 Simon Yang <simon@thinknet.com> 1361018369 +0000 rebase: 调整查找环的算法,使用边的集合表示环,而不是点。因为两个点之间可能有多个边相连.
00ac36a4df9c6bc0a0dc6eaa6e97ac3e9a316e4d 5106c92fdf871a20235845849b3eb05f0564b8fc Simon Yang <simon@thinknet.com> 1361018378 +0000 rebase: 修改判断浏览器的方法,避免QT JS崩溃。
5106c92fdf871a20235845849b3eb05f0564b8fc 5106c92fdf871a20235845849b3eb05f0564b8fc Simon Yang <simon@thinknet.com> 1361018378 +0000 rebase finished: returning to refs/heads/master
5106c92fdf871a20235845849b3eb05f0564b8fc e8ec0389ab91c2a806314b1477f9c3581b954f4b Simon Yang <simon@thinknet.com> 1361018420 +0000 reset: moving to refs/remotes/trunk
e8ec0389ab91c2a806314b1477f9c3581b954f4b c705522a88e29d330fdd5829f083cab62401655a Simon Yang <simon@thinknet.com> 1361018441 +0000 reset: moving to refs/remotes/trunk
dbfbc9b3ef9328ee4c63520d241beb8e027df779 33376856ff7a30bd008e67351fa99eed3f6de949 Simon Yang <simon@thinknet.com> 1360890032 +0800 commit: 调整查找环的算法,使用边的集合表示环,而不是点。因为两个点之间可能有多个边相连.
58ae5dddaf114c08a7b834e1702d2729c2d64952 358247740c329c5edc8f764080f40e1aad93ca6f Simon Yang <simon@thinknet.com> 1360942854 +0800 commit: 修改判断浏览器的方法,避免QT JS崩溃。
358247740c329c5edc8f764080f40e1aad93ca6f 0041469dc09a815dd7b0164b7043f1224954fab4 Simon Yang <simon@thinknet.com> 1361018342 +0000 checkout: moving from master to 0041469dc09a815dd7b0164b7043f1224954fab4^0
f0eced5c872b2eda5d4c8bec6d1a3314f2fe4bab 008f69e8e4d0c9ebba9e9bfb07c0e48e7178cf09 Simon Yang <simon@thinknet.com> 1361018367 +0000 rebase: 修复查找环的算法,确保两点间有多条线相连或一个点形成闭环的情况下算法错误。
008f69e8e4d0c9ebba9e9bfb07c0e48e7178cf09 a238ce2fcba10c777c2a79867dca94c5d3068db9 Simon Yang <simon@thinknet.com> 1361018369 +0000 rebase: 调整查找环的算法,使用边的集合表示环,而不是点。因为两个点之间可能有多个边相连.
00ac36a4df9c6bc0a0dc6eaa6e97ac3e9a316e4d 5106c92fdf871a20235845849b3eb05f0564b8fc Simon Yang <simon@thinknet.com> 1361018378 +0000 rebase: 修改判断浏览器的方法,避免QT JS崩溃。
5106c92fdf871a20235845849b3eb05f0564b8fc 5106c92fdf871a20235845849b3eb05f0564b8fc Simon Yang <simon@thinknet.com> 1361018378 +0000 rebase finished: returning to refs/heads/master
5106c92fdf871a20235845849b3eb05f0564b8fc e8ec0389ab91c2a806314b1477f9c3581b954f4b Simon Yang <simon@thinknet.com> 1361018420 +0000 reset: moving to refs/remotes/trunk
e8ec0389ab91c2a806314b1477f9c3581b954f4b c705522a88e29d330fdd5829f083cab62401655a Simon Yang <simon@thinknet.com> 1361018441 +0000 reset: moving to refs/remotes/trunk
你的最后一次提交一般应该是commit动作产生的,不要误用了rebase。
为了确保你查找的记录正确,你可以使用下面的命令查看该次提交的内容。
git show 358247740c329c5edc8f764080f40e1aad93ca6f
确定记录后,可以使用下面的命令回滚到你的最后一次提交。
git reset --hard 358247740c329c5edc8f764080f40e1aad93ca6f
然后重新rebase svn的修改并dcommit
git svn rebase
git svn dcommit
git svn dcommit
如果中间再次出现错误,可以重复上面的动作。已经提交到svn库中的修改,下一次dcommit时不会再次提交。
- git-svn提交修改出错时的恢复办法
- svn 强制提交的办法
- EntityName 出错时的解决办法
- EntityName 出错时的解决办法
- git svn 修改提交username and password
- svn不能用tortoiseSVN提交的办法
- 安装uclinux编译器出错时的解决方法
- tortoisecvs 去掉出错时的声音
- css 出错时的检查方法
- 读取Excel和出错时的解决
- 图像加载出错时的处理
- git恢复修改的文件
- Git恢复被修改的文件--未提交到远程仓库
- Git恢复被修改的文件--已提交到远程仓库
- git 修改提交的说明
- git 文件修改的提交
- 修改代码防止zend db出错时把密码输出
- git 恢复到上次提交的状态
- Dynamic Class Loading in Java
- AJAX请求异常代码含义
- 使用vs2010编译CCV1.5
- Photon服务器引擎 入门教程二
- 使用并行计算大幅提升递归算法效率
- git-svn提交修改出错时的恢复办法
- JAVA经典算法40题(18)
- java实现sftp实例
- 嵌入式系统基础
- 黑马程序员 Java初级<二>--->数据、变量与运算
- log4j:ERROR Could not find value for key log4j.appender.CONSOLE
- JAVA 数组复制
- 哈希排序
- java构造器