您的位置:首页 > 其它

Git 基本操作2--撤销修改

2017-02-16 17:30 260 查看
其实当我们选择了IT行业的那一刻起,就跟加班联系在了一起,我相信大部分人都有决战到凌晨的经历,我刚毕业曾经加班到凌晨一点,回家路上,拖着疲惫的双腿,走在城中村的小路上,任凭细雨轻抚脸庞,那时候很享受那种感觉,而实际加班的过程当中我们有时候思路是不清晰的,这时候难免会出现一些误差,我见过一个很知名的app还有test的字样,而我们在版本控制中如果遇到这种情况,我们怎么撤销修改呢,今天就重点讲解讲解:

需要注意的是我们意识到自己错误的情况的时间点,有好几种情况,理论不多说,直接实际操作:

1.如果误修改尚未add 到暂存区。可以使用一下命令git checkout -- file名称

情节分析:

zxdeMacBook-Pro:work zs$ cat addme.txt

GIT records your name and email address

I love you , cangjingkong!


使用git status 查看出状态

zxdeMacBook-Pro:work zs$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

modified:   addme.txt

no changes added to commit (use "git add" and/or "git commit -a")


通过查看,可以看到并没有add,同时有提示,
use "git checkout -- <file>..." to discard changes in working directory


使用 git  checkout -- 放弃修改。这时你庆幸还好没有被发布出去,这时候你想修改,之后查看,确实已经撤销了修改。

zxdeMacBook-Pro:work zs$ git checkout -- addme.txt
zxdeMacBook-Pro:work zs$ cat addme.txt

GIT records your name and email address


说明:git checkout --file 的意思就是撤销工作区的修改。

2.如果误修改已经add到暂存区,但没有commit到分支。使用 git reset HEAD file名称

   有时候,我们操作过程中,并不是每次都意识到有误操作,比如改完就顺手add到索引区了,这时候突然想到哦,刚才有条测试语句   没有删除 ,这时候怎么办?  我们查看下状态:

zxdeMacBook-Pro:work zs$ cat addme.txt
GIT records your name and email address
I love you, cangjingkong!
zxdeMacBook-Pro:work zs$ git add addme.txt
zxdeMacBook-Pro:work zs$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

modified:   addme.txt


执行git reset HEAD addme.txt,查看状态:

zxdeMacBook-Pro:work zs$ git reset HEAD addme.txt
Unstaged changes after reset:
M addme.txt
zxdeMacBook-Pro:work zs$ git status On branch master Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: addme.txt no changes added to commit (use "git add" and/or "git commit -a")
又回到了第一种情况,在重复操作1即可。

说明:git reset HEAD file 是将修改从索引区移除(unstage),回退到工作区。

如果已经提交到版本库了,这时候怎么办?如果又push到远程仓库,这时候又怎么办?就是下边情况,我想放到版本回退里去讲解

3.如果误修改已经commit到分支。

4.如果误修改已经push到了远程仓库。

知识点总结:撤销修改:1.未add ,使用git checkout -- file名称。

2.add,未commit,使用 git reset HEAD file,回到第一种情况。

     3.已经提交的,请看下一篇版本回退。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  git 撤销修改