git revert实战
来源:互联网 发布:灌鸡汤的网络意思 编辑:程序博客网 时间:2024/05/21 14:03
1.reset revert区别
git reset是直接删除指定的commit,把HEAD向后移动了一下
git revert是一次新的特殊的commit,HEAD继续前进,本质和普通add commit一样,仅仅是commit内容很特殊:提交的内容是与前面普通commit文本变化的反操作。比如前面普通commit是增加一行a,那么revert内容就是删除一行a
由于reset方式HEAD指针后移,推送到远端时需要有强制更新权限或者删除分支权限,公司gforge设有权限限制,走不通。
2.revert commit
仅仅用于非merge操作的普通commit
假设按时间顺序依次有commit1, commit2, commit3,commit4,对应有version1, version2, version3, version4四个状态.
revert某次commit(例子中commit4,commit4不是merge,那么revert后包括commit4以及后面的commit都会被抵消,最终文件状态为commit4前,即version 3状态)
git revert commit4
[master 3a2ea91] Revert "version 4"1 file changed, 1 insertion(+), 2 deletions(-)
git status
#位于分支 master#您的分支领先 'origin/master' 共 1 个提交。# (使用 "git push" 来发布您的本地提交)#无文件要提交,干净的工作区
此时git push即可推送至远端
push后有commit5(commit5即本次convert操作),对应着version5,刚好version5与version3的文件状态一致,因为version4及以后的修改被抵消掉了.
revert过程有可能遇到冲突,要么git revert --abort终止此次revert操作,代码还原至revert命令前。要么手动消除冲突(同普通的冲突解决),然后add commit
3.revert merge
适用于merge操作的commit
假设当前状态:
commit 94ce4b8dcb898f730e6eecd73c00491f8020b67eMerge: a2471f3 6a17d85本次属于merge commit,注意Merge 标注Author: 罗** <luo**@youku.com>Date: Fri May 20 11:03:53 2016 +0800 mergecommit a2471f331c36a21d25aa158668cdc05987eef114Author: 罗** <luo**@youku.com>Date: Fri May 20 11:03:01 2016 +0800 verison 9commit 6a17d85b04e52eddeb2ecb2a311804e10dada1e6Author: 罗** <luo**@youku.com>Date: Fri May 20 11:02:10 2016 +0800 version 8commit 9441871ec2ff071e1a5be41646a32b2aea0b5502Author: 罗** <luo**@youku.com>Date: Fri May 20 10:56:08 2016 +0800 version 7
可以看到94ce4b8是一次merge commit,Merge 标注为Merge: a2471f3 6a17d85,意思是说当前分支commit a2471f3(version 9),加上来自其他分支的commit 6a17d85(version 8).此时要撤销94ce4b8所表示的merge.
如果不指定-m参数
git revert 94ce4b8dcb898f730e6eecd73c00491f8020b67eerror: 提交 94ce4b8dcb898f730e6eecd73c00491f8020b67e 是一个合并提交但未提供 -m 选项。fatal: 还原失败
指定-m参数
git revert 94ce4b8dcb898f730e6eecd73c00491f8020b67e -m 2# 位于分支 develop无文件要提交,干净的工作区
-m参数含义:Merge 标注为Merge: a2471f3 6a17d85,传1表示撤销到a2471f3所代表的commit,传2表示撤销到6a17d85所代表的commit。数字1,2表示的是标注冒号后的位置编号
上面例子中传参-m 2,所以撤销到6a17d85,最终文件状态与6a17d85 commit后一致(注意与上文差异),本例子中结果状态是“version 8”,不是version 7, git log确认结果如下:
commit 290c2f72d8d56d6be1008807450d4635095a549bAuthor: 罗** <luo**@youku.com>Date: Fri May 20 11:32:34 2016 +0800 Revert "merge" This reverts commit 94ce4b8dcb898f730e6eecd73c00491f8020b67e, reversing changes made to 6a17d85b04e52eddeb2ecb2a311804e10dada1e6.
- git revert实战
- git revert
- git revert
- Git Revert
- git revert
- git revert
- git revert
- Git revert
- git revert
- git revert
- git revert
- git revert
- git revert & git reset
- git系列------git revert
- git revert 小结
- git revert 撤销提交
- git revert to revision
- git revert all changes
- RDD转成DataFrame报错
- Android中网络传输不同内容
- 欢迎使用CSDN-markdown编辑器
- Java程序员一定知道的优秀第三方库
- 想要成为java大牛必须知道的25点
- git revert实战
- 重现TortoiseSVN客户端的用户名密码验证框
- Android L版本中实现32bit userspace程序能通过ioctl()系统调用与64bit的kernel driver中的unlocked_ioctl()接口
- 上传图片后不显示,但是点击图片链接进去是能看到图片的
- cocos2d-x v3.10 lua PageView测试实例
- 图像的深度和通道概念区分
- Android 学习笔记之九 下拉刷新
- iOS改变cell的侧滑显示图片
- MyEclipse 2015 Windows版下载地址(已更新最新版Stable 3.0)