git回撤
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交:
git reset HEAD^ //回退至上一版本, 并重置缓存区
git reset HEAD~10 //回退至10个版本之前, 并重置缓存区
git reset --soft HEAD //回退时不重置缓存区和工作区
git reset --mixed HEAD //回退时重置缓存区, 默认选项
git reset --hard HEAD //回退时重置缓存区和工作区
git reset //不指定HEAD, 用来清空缓存区的修改
git reset filename //清空缓存区指定文件的修改
git reset --hard //不指定HEAD, 用来清空工作区和缓存区的修改
git reset --hard filename //清空工作区和缓存区指定文件的修改
git checkout branch //切换branch, 同时重置缓存区和工作区, 如果工作区有修改没有提交, 需要先commit或stash
git checkout branch --force //切换branch, 同时重置缓存区和工作区
git checkout --force //不指定branch, 用来清空工作区的修改(缓存区不变, 如果之前有add, 则工作区与缓存区一致)
git checkout -- filename //清空工作区指定文件的修改
git删除
命令git rm
用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。
git checkout
其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。