额,怎么开头呢,从文章的定位开始吧。这篇文章的目的就是定位给彻底的小白,像我这样,对于互联网知识不了解的人,可是特别渴望学习,小白文章小白文章小白文章!重要的事情说三遍,大神绕行!android
先说下环境:git
运行环境:mac os 编程工具:android studio 代码托管平台:开源中国git@cos
好了,先来模拟下可能须要用到这篇文章的地方。咱们的代码都在远程服务器托管。 不少缘由可能会致使咱们想删掉远程服务器上提交的版本。下面就来讲下怎么删除,应该有不一样的方法去实现删除。编程
1.1假设咱们服务器上的commit记录为:segmentfault
commit4 commit3 commit2 commit1
咱们所提交的commit4为你想删除的。那应该从哪入手?
至少我用的android studio我不知道如何下手。而多数用git的人都是用的命令行控制,很显然,咱们也要用命令行控制。具体操做:windows
1.2在哪里输入命令行
打开mac上的终端(windows好像也有个cmd仍是啥的吧,输入命令行的,都同样的)。而后多少有点开发经验的应该都知道命令行的cd指令。在终端中,cd到你的项目目录下。正常来讲,若是你的项目是一个git项目,那么在你的目录下面会有个.git的隐藏文件夹。好比个人项目叫Test
,在硬盘的develop
文件夹下。在终端中输入“cd developer/Test/
”回车,此时已经定位到你的项目下了。这时候你操做的就是当前项目的git,不会影响其余的git库。服务器
1.3输入什么?
咱们去网上看人家的教程,人家每每都直接给出"get reset --hard...
"之类的代码,这时候咱们就能够在当前的终端中输入了。下面主要说一下删除的命令行。拿上面的例子。commit4
为你想删除的,首先在终端中输入"git reset --hard HEAD~1
",接下来会提示"HEAD is now at commit3"就是说你当前的代码是commit3提交的内容。而后经过"git push --force
"命令提交到远程库。这里必定要注意注意再注意!工具
注意:提交到远程库以后,commit4的代码会直接从远程库里面删除。 也就是修改的记录没了。下面要讲的,跟刚才输入的第一个命令"git reset --hard HEAD~1
"有关,这里相当重要的是后面那个数字。1表明你当前在git上最新的那个版本。2,表明的是最新版本的上一个版本,以此类推。也就是当你输入"git reset --hard HEAD~2
"的时候,会把commit3以及之后的都删掉,也就是远程仓库只有commit2修改后的代码!学习
经过上文看到,这种用法还有一点局限性,那就是我想要只删除中间的commit3版本,可是想保留commit4修改的内容。这种需求是没法知足的。 命令行
该文章虽为原创,可是里面用到的方法是我在SegmentFault社区的一篇文章上看到的:http://segmentfault.com/a/1190000004071116
还得多谢一直支持个人大神,让我知道如何操做git代码!多谢!code