git撤銷修改

問題:

        我以前用過 svn ,我想要的就是跟 svn revert 一樣的功能。比如現在修改了 a b 兩個文件,沒有 git add 也沒有 commit ,想要撤銷修改。我只知道可以 git reset --hard ,但這樣會把所有修改都撤銷,如果我只想撤銷 a 的修改怎麼辦?

解答:

       

以提問中修改了兩個文件a、b爲例,假設需要撤銷文件a的修改,則修改後的兩個文件:
1、如果沒有被git add到索引區
git checkout a 便可撤銷對文件a的修改

2、如果被git add到索引區,但沒有做git commit提交
1)使用git reset將a從索引區移除(但會保留在工作區)
git reset HEAD a
2)撤銷工作區中文件a的修改
git checkout a

3、如果已被提交,則需要先回退當前提交到工作區,然後撤銷文件a的修改
1)回退當前提交到工作區
git reset HEAD^
2)撤銷工作區中文件a的修改
git checkout a

補充:靈活使用以上操作的關鍵在於理解git中工作區、索引區的概念和git reset命令hard、mixed(default)、soft三種模式的區別,網上有很多這方面的文章,不再贅述。

作者:佛陀小沙彌
鏈接:https://www.zhihu.com/question/20039839/answer/125382988
來源:知乎
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章