使用Git退回撤销命令

修改Git的远程GitHub地址

git remote origin set-url URL

一、 介绍需要用到的命令

  • git checkout
    是撤销当前文件的修改,将文件回退到上次提交的状态;将没有暂存的工作区域的内容,撤销回来;
  • git reset HEAD
    是当前的目录文件还原至上次提交的状态,会将暂存的文件回退到未跟踪状态,将暂存区的内容移除;
  • git clean -df
    是讲未跟踪的文件删除清理,配合git reset HEAD使用,删除本地版本;
  • git revert [commit id]
    反转,对gitHub上的提交版本进行更改,如果一次提交是添加3个文件,那么反转就是减去3个文件

二、以test_Git项目为例,进行checkout命令的案例分析;

1.项目初始状态

一共有三次版本提交:

  • 第一次:项目初步建立
  • 第二次:添加一个splash.xml文件
  • 第三次:添加了两个bean类:Boutique类和CartBean类
    项目初始阶段AndroidStudio.jpg

    commit id 很重要后面需要
    打印git log
    项目初始gitLog.jpg

2.对BoutiqueBean.java进行文件的第一次更改

在BoutiqueBean.java文件中title那行加了5个9

BoutiqueBean文件修改.jpg

此时BoutiqueBean文件从未修改状态变为已修改状态
BoutiqueBean从未修改状态变为已修改状态.jpg

3. 回退对BoutiqueBean.java的修改

后面加了.表示对当前目录的文件

git checkout .

BoutiqueBean回退刚才的修改.jpg

回退之后的文件状态
回退之后的文件状态.jpg

4. 对BoutiqueBean.java的文件进行第二次修改,并将已修改状态文件添加到暂存区域

在BoutiqueBean.java文件中title那行添加6个9;

BoutiqueBean再次修改.jpg

将已修改状态的处于工作区域BoutiqueBean文件添加到暂存区,文件从已修改状态变为暂存态

git status 
git add .
git status
BoutiqueBean已修改状态变为暂存状态.jpg

5.此时使用checkout退回,发现文件并没有回到原来没有被修改的状态

BoutiqueBean没有回到修改状态.jpg

文件没有回到原来的未修改的状态,仍在暂存区域,处暂存状态

git checkout .
git_checkout文件没有回到原来的状态.jpg

6. 对BoutiqueBean.java文件进行第三次修改,此时文件有两种状态

在BoutiqueBean.java文件中title那行将6个9改为3个9

BoutiqueBean第三次修改.jpg

文件有两种状态:

一个是未提交到git仓库的处于git暂存区域的暂存状态的文件
另外一个是刚刚修改过的处于git工作目录的修改状态的文件

文件的两种状态.jpg

7. 执行checkout命令,那么回退的是那个红色没有提交到暂存区域的处于工作目录为修改状态的文件

变为6个9.jpg

文件状态变为一个,剩下那个在暂存区域里的暂存状态
文件状态变为一个.jpg


三、以test_Git项目为例,进行reset HEAD命令的案例分析;

接上面的案例的步骤继续,BoutiqueBean.java文件状态只剩下一种暂存状态,处于暂存目录

1. 取消暂存状态,文件的内容没有退回第二次修改的状态

文件内容没有退回到原来的变化.jpg

文件的状态从已暂存状态变为已修改状态,文件从暂存区域到了工作目录

git reset HEAD
git status
取消文件已暂存状态.jpg
2. 使用checkout命令,把处于工作目录的已修改文件退回到

也就是将第二次修改的文件退回到未修改状态

文件第二次修改已退回.jpg

工作目录和暂存区域都没有文件可以被操作
文件被checkout退回.jpg


四、进行已经提交到GitHub文件回退案例;

1.退回第二个提交版本-添加splash.xml文件的版本
  • 查看此时在GitHub上提交的三个版本,并将第二个版的commitId复制,用于命令
    复制添加splash.xml的commitId.jpg
  • 执行checkout命令
git checkout f4e57fe12e43f02a9409c025c9c8285a36d0461a
让项目退回第二个版本添加splash.xml.jpg
  • 执行git log,我们发现第三个版本添加bean已经不存在
git log
已经只有两个版本.jpg
  • 执行git status,我们发现代码处于第二个提交版本
git status
gitStatus当前代码位于第二个版本.jpg
  • 当前HEAD没有指向本地的分支
没有指向本地分支.jpg
  • 在AndroidStudio里也没有两个bean类,versionControl里可以看到HEAD指向
项目没有Bean类.jpg
versionControl工具HEAD指向第二版本.jpg
2.从第二个版本在再回到项目master分支,即最终的那个添加bean版本
git checkout master
git log
回到master.jpg

两个bean类又出现在了AndroidStudio里面

AndroidStudio项目里面.jpg

五、进行撤销本地版本案例

1、删除本地第三个版本
  • git reset HEAD命令 处于第三个版本,想要回到第二个版本,需要加上^
git reset HEAD^
resetHEAD命令撤回第二个版本.jpg
  • 此时查看文件状态,会发现第三个版本的文件已经变为未跟踪文件,它已经不再暂存区域了
git status
退回第二个版本的状态.jpg
  • 处于master分支
git branch
处于master分支上.jpg
  • AndroidStudio中versionControl的HEAD显示,两个bean类文件处于红色
    本地分支master处于第二个版本
    撤销第三个版本的versioncontrol.jpg
  • 删除本地第三个版本
git clean -df
删除本地第三个版本.jpg
  • 此时git文件的状态
    此时git文件的状态.jpg
2、在此时的本地分支指向添加文件并提交给gitHub远程仓库,执行撤销此次提交
git status
git add ,
git commit -m "add bean"
git push origin master

推送失败,因为当前本地的分支版本落后于gitHub上的分支版本,两个分支不在一起
origin master可以跟本地master平级或者在本地的下面,但是不能分叉

推送gitHub仓库出了分支错误.jpg

此时在AndroidStudio里面的版本分支的路径发生了变化
本地的分支已经指向了我们第四次版本,远程仓库指向之前的第三次版本;
分支路径发生了变化.jpg

  • 有生成提交id
git log

提交log.jpg

撤销此次错误提交,回到添加splash.xml版本

git reset HEAD^
git status
git clean -df
git status
撤销了错误文件提交.jpg
3、回到gitHub上的分支,本地的分支的版本已经没有添加bean了
git status
git pull

回到gitHub的分支.jpg

此时第三个版本添加bean又回来了

git log
gitLog.jpg

六、将gitHub上的提交反转,理解为撤销

1、拿到项目提交的Log,找到要撤销的提交的id
git log
此时的Log.jpg
2、撤销升级这个提交,回到了第三个版本添加bean
git revert ec03f259e82c26cda76866878e8f188c50878aa2
生成了一个提交页面,退出保存
:wq
git revert升级.png
3、在AndroidStudio中可以看到版本的变化,以及本地分支的指向
本地分支的指向.jpg
4、提交给gitHub,那么github的升级这次提交就被撤销了
git push -u origin master
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,372评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,368评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,415评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,157评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,171评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,125评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,028评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,887评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,310评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,533评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,690评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,411评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,004评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,812评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,693评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,577评论 2 353

推荐阅读更多精彩内容

  • git常用命令 GIT常用命令备忘:http://stormzhang.com/git/2014/01/27/gi...
    新篇章阅读 8,471评论 1 26
  • 本文为 Git教程的学习笔记,教程源自廖雪峰的博客。这是一个由浅入深,学完后能立刻上手的Git教程。另,附上另一本...
    七弦桐语阅读 6,245评论 5 47
  • 观察对象:刘峻博 年 龄:4岁 工作名称:彩色阶梯串珠 工作描述:蒙氏自选工作开始了,峻博首先走到了数学区,他...
    谷晓玉阅读 273评论 0 1