目录
当在Git仓库下修改的文件想要撤回时(即还没有git add提交到暂存区),使用 git checkout -- <file> 可以撤销工作区的修改。例如下面的例子中,Git 仓库中的文件分布是这样的:
➜ Code git:(master) ll
total 8
drwxr-xr-x 5 staff 160 8 10 12:14 ./
drwxr-xr-x+ 61 staff 1952 8 18 09:32 ../
drwxr-xr-x 13 staff 416 8 18 09:32 .git/
drwxr-xr-x 3 staff 96 8 3 15:29 cliff_demo/
-rw-r--r-- 1 staff 21 8 10 12:14 master1.txt
进入到master1.txt中,看看原本有什么内容:
1 version: master1.0.0
修改master1.txt的内容,并保存退出:
version: master1.0.0
new version: ?
接下来撤回master1.txt的修改
git checkout -- file
➜ Code git:(master) ✗ git checkout -- master1.txt
再次进入master1.txt查看,发现刚刚的改动被撤销了:
version: master1.0.0
在使用 git add命令将工作区的修改添加至暂存区后,可使用 git reset HEAD <file> 撤销暂存区的修改。
例如修改master1.txt文件:
(添加了最后一行)
version: master1.0.0
json : JavaScript Object Notation
使用git add将master1.txt文件修改添加至暂存区:
➜ Code git:(master) ✗ git add master1.txt
这时可以使用 git reset HEAD <file> 撤销本次暂存区的改动:
➜ Code git:(master) ✗ git reset HEAD master1.txt
Unstaged changes after reset:
M master1.txt
(此时文件只是从暂存区又重新回到了工作区)
继续使用 git checkout -- master1.txt 命令就可以将文件的修改从工作区撤回。
➜ Code git:(master) ✗ git checkout -- master1.txt
打开文件,发现文件确实被撤回了。
version: master1.0.0
如果修改通过 git commit 提交到了版本库,无法直接使用命令撤销修改,只能通过版本切换到之前的版本。
git 版本切换:
https://blog.csdn.net/TCatTime/article/details/96482114
如果使用了 git push 命令将修改提交到了远程仓库,此时已经无法使用git 命令撤销。只能再次修改文件重新手动修改,并将修改重新git push到远程仓库。