赞
踩
本地编写的代码,未执行任何git命令时,处于工作区,可以使用:
git diff
来查看本地修改。如果想重置(清空)工作区的修改内容,可使用:
git checkout -- .
清空当前工作区目录下的所有修改。也可以指定文件名称,重置对某个文件的修改。
git checkout -- [filename]
本地编写的代码,可通过执行git add .
命令将已修改的文件提交到暂存区。使用该命令后再使用git diff
将不会看到任何输出。如果想查看暂存区的修改需要使用命令:
git diff --staged
如果想撤销暂存区的全部修改可以使用命令:
git reset .
提交到暂存区的代码可以使用git commit -m '"operate comment"
提交到本地仓库,此时提交历史中会使用commit id标识本次提交(使用git log
命令即可查看提交历史)。此时如果我们想撤销本次提交可使用如下两种方式:
(1)回到当前提交的上一次提交:
先使用git log
找到本次提交的上一次提交的commitid,然后执行如下命令即可。
git checkout a28dsasd (上次提交的commit id)
(2)使用reset命令,重置提交
git reset --hard HEAD~1
如果想重置之前的提交可以将HEAD~1改为想要重置的commit id即可。
PS:也可以使用 git reflog
查看重置过的提交,然后使用:
git reset --hard s2dsfa2
将重置过的提交再次恢复。
reset三种模式区别和使用场景
区别:
–hard:重置位置的同时,直接将 working Tree工作目录、 index 暂存区及 repository 都重置成目标Reset节点的內容,所以效果看起来等同于清空暂存区和工作区。
–soft:重置位置的同时,保留working Tree工作目录和index暂存区的内容,只让repository中的内容和 reset 目标节点保持一致,因此原节点和reset节点之间的【差异变更集】会放入index暂存区中(Staged files)。所以效果看起来就是工作目录的内容不变,暂存区原有的内容也不变,只是原节点和Reset节点之间的所有差异都会放到暂存区中。
–mixed(默认):重置位置的同时,只保留Working Tree工作目录的內容,但会将 Index暂存区 和 Repository 中的內容更改和reset目标节点一致,因此原节点和Reset节点之间的【差异变更集】会放入Working Tree工作目录中。所以效果看起来就是原节点和Reset节点之间的所有差异都会放到工作目录中。
作者:carway
链接:https://www.jianshu.com/p/c2ec5f06cf1a
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。