Git 版本回退2
2017-02-18 23:33
90 查看
今天接着上篇继续讲解,我们在日常团队协作开发中,经常会遇到这样的情景:当完成最后一个模块,为了抓紧时间赶最后一趟地铁,高高兴兴的把自己程序提交到远程仓库,刚回到家躺下,突然想到有个小失误不应该提交,遇到这种情况,需要回退,我们应该怎么处理呢?
首先,必须要明白的一件事,任何普通用户不能擅自做有关远程仓库回退的操作,如果你擅自回滚了远程仓库,会对项目团队其他人造成不可预知的影响。如果需要回退版本,先联系项目的仓库管理员,或项目负责人。
我们这时候需要用到git revert这条命令,我们之前讲了一个git reset,那两者有啥区别呢。先从概念入手:
(1) 如果你已经push改动的代码到线上代码库,reset删除指定commit以后,其实并不影响远程仓库的代码,这时候你git push可能导致一大堆冲突.但是revert并不会。
(2) reset 是在正常的commit历史中,删除了指定的commit,这时HEAD是向后移动了,而revert是在正常的commit历史中再commit一次,只不过是反向提交,他的HEAD 是一直向前的,因此此次操作之前和之后的commit和history都会保留,revert相当于递增了一条log。
举个例子吧:假设当前有3个commit,git log如下:
执行 git revert HEAD~1之后,也可以执行git
revert 43dfff... 会提示提交信息,提交后git log如下:
上述执行完可以看出commit3,commit2都继续存在在记录中。
而执行 git reset HEAD~1之后,再次看git log,如下:
commit3已经不再记录中,同时也没有递增一条新记录,当然按之前博客里讲的,test3.c并没有丢失,代码仍然保留。
其实今天讲的都很范范,我在以后的博客中会专门讲解git遇到的各种情况的处理办法。
上述版本回退,撤销修改的几种情况大体讲完,主要就是几个命令:git checkout,git reset,git revert 等等。后续会结合分支,在遇到具体情况具体讲解这一部分。
首先,必须要明白的一件事,任何普通用户不能擅自做有关远程仓库回退的操作,如果你擅自回滚了远程仓库,会对项目团队其他人造成不可预知的影响。如果需要回退版本,先联系项目的仓库管理员,或项目负责人。
我们这时候需要用到git revert这条命令,我们之前讲了一个git reset,那两者有啥区别呢。先从概念入手:
(1) 如果你已经push改动的代码到线上代码库,reset删除指定commit以后,其实并不影响远程仓库的代码,这时候你git push可能导致一大堆冲突.但是revert并不会。
(2) reset 是在正常的commit历史中,删除了指定的commit,这时HEAD是向后移动了,而revert是在正常的commit历史中再commit一次,只不过是反向提交,他的HEAD 是一直向前的,因此此次操作之前和之后的commit和history都会保留,revert相当于递增了一条log。
举个例子吧:假设当前有3个commit,git log如下:
commit3(f3343d): add test3.c commit2(43dfff): add test2.c commit1(1qdd4r): add test1.c
执行 git revert HEAD~1之后,也可以执行git
revert 43dfff... 会提示提交信息,提交后git log如下:
commit4: Reverts “test2.c” commit3: test3.c commit2: test2.c commit1: test1.c
上述执行完可以看出commit3,commit2都继续存在在记录中。
而执行 git reset HEAD~1之后,再次看git log,如下:
commit2: test2.c commit1: test1.c
commit3已经不再记录中,同时也没有递增一条新记录,当然按之前博客里讲的,test3.c并没有丢失,代码仍然保留。
其实今天讲的都很范范,我在以后的博客中会专门讲解git遇到的各种情况的处理办法。
上述版本回退,撤销修改的几种情况大体讲完,主要就是几个命令:git checkout,git reset,git revert 等等。后续会结合分支,在遇到具体情况具体讲解这一部分。
相关文章推荐
- 在Xcode中使用Git进行源码版本控制
- 版本控制git(三)-git分支
- Visual Studio Code 使用Git进行版本控制
- 版本控制 --- 1. 你干嘛要用Git(单人寂寞版)
- 关于版本管理工具 git 的具体使用
- Git分布式版本控制系统
- 详解在visual studio中使用git版本系统(图文)
- Git本地版本控制备忘
- 编译时向 go 程序写入 git 版本信息
- Git版本控制管理学习笔记5-提交
- Git简明教程--5.文件撤销和版本撤销操作
- Git 忽略文件不加入版本控制
- Git项目版本管理
- Atitit 项目版本管理gitflow 与 Forking的对比与使用
- 用git更新线上项目代码后回滚到之前的稳定版本
- git 回退版本
- 基于git版本控制团队协作流程
- Git的工作区、暂存区和版本库之间的关系及其互操作
- 使用git来控制版本 并分享到github上(自学或分享必备)