美文网首页GitGit
使用Git退回撤销命令

使用Git退回撤销命令

作者: dayang | 来源:发表于2017-01-11 21:15 被阅读2000次

修改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

相关文章

  • 使用Git退回撤销命令

    修改Git的远程GitHub地址 一、 介绍需要用到的命令 git checkout是撤销当前文件的修改,将文件回...

  • GIT reset hard/soft/revert的区别

    三个命令都是撤销 git reset --hard xxx 撤销你没有提交的改动和将你本地库全部的操作退回到XXX...

  • git reset(--hard/--soft/)和git re

    在平时的使用GIT进行版本控制作业时,常常会遇到需要退回或者撤销代码的情况,这时候我们就需要清楚怎么去使用git ...

  • git 撤销命令 git reset 使用

    一、功能说明 执行 git reset --help 可以看到帮助文档公共说明: 1.1、git reset [...

  • 常用的git命令

    常用Git命令 切换分支:git checkout name 撤销修改:git checkout -- file ...

  • Git命令详解(转)

    Git命令详解 添加操作 提交操作 删除操作 撤销操作 在Git中,用HEAD表示当前版本。 撤销add 撤销co...

  • Git 备忘录

    Git 备忘录 -- Git 查看记录 一行展示log日志 查看命令历史 Git 回退 从本地仓库撤销(使用了gi...

  • git reset --hard xxx、git reset -

    在git操作中有时候我们会进行错误的commit,这个时候想要撤销这次提交可以使用git reset命令. git...

  • Git撤销commit

    Git撤销commit 使用git log命令查看最近所有的commit记录: 会出现类似这样的一系列信息: 找到...

  • git的一些基本命令

    多人合作git的一些基本命令 解决分支冲突 git撤销 在没有add之前撤销:git checkout

网友评论

    本文标题:使用Git退回撤销命令

    本文链接:https://www.haomeiwen.com/subject/prdkbttx.html