GitGit

使用Git退回撤销命令

2017-01-11  本文已影响2000人  dayang

修改Git的远程GitHub地址

git remote origin set-url URL

一、 介绍需要用到的命令


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

1.项目初始状态

一共有三次版本提交:

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文件的版本
git checkout f4e57fe12e43f02a9409c025c9c8285a36d0461a
让项目退回第二个版本添加splash.xml.jpg
git log
已经只有两个版本.jpg
git status
gitStatus当前代码位于第二个版本.jpg 没有指向本地分支.jpg 项目没有Bean类.jpg versionControl工具HEAD指向第二版本.jpg
2.从第二个版本在再回到项目master分支,即最终的那个添加bean版本
git checkout master
git log
回到master.jpg

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

AndroidStudio项目里面.jpg

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

1、删除本地第三个版本
git reset HEAD^
resetHEAD命令撤回第二个版本.jpg
git status
退回第二个版本的状态.jpg
git branch
处于master分支上.jpg
git clean -df
删除本地第三个版本.jpg
2、在此时的本地分支指向添加文件并提交给gitHub远程仓库,执行撤销此次提交
git status
git add ,
git commit -m "add bean"
git push origin master

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

推送gitHub仓库出了分支错误.jpg
此时在AndroidStudio里面的版本分支的路径发生了变化
本地的分支已经指向了我们第四次版本,远程仓库指向之前的第三次版本;
分支路径发生了变化.jpg
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
上一篇下一篇

猜你喜欢

热点阅读