返回顶部
本页目录

reset

将当前的 HEAD 重置到指定状态

实例

重置暂存区的指定文件,与上一次commit保持一致,但工作区不变

                            
  • git reset [file]

重置暂存区与工作区,与上一次commit保持一致

                            
  • git reset --hard

重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变

                            
  • git reset [commit]

重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致

                            
  • git reset --hard [commit]

重置当前HEAD为指定commit,但保持暂存区和工作区不变

                            
  • git reset --keep [commit]

将本地的状态回退到和远程的一样

                            
  • git reset --hard origin/master

撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交

                            
  • git reset --hard HEAD

HEAD 说明

HEAD 表示当前版本
HEAD^ 上一个版本
HEAD^^ 上上一个版本
HEAD^^^ 上上上一个版本

HEAD~0 表示当前版本
HEAD~1 上一个版本
HEAD^2 上上一个版本
HEAD^3 上上上一个版本

选项

--soft

完全不触摸索引文件或工作树(而是将头重置为 <commit> ,就像所有模式一样)。就像 git status 那样,这会将所有更改的文件保留为“要提交的更改” 。

--mixed

重置索引,但不重置工作树(即保留修改后的文件,但不标记为提交),并报告未更新的内容。这是默认操作。

如果指定了 -N ,则将删除的路径标记为要添加的意图

--hard

重置索引和工作树。自 <commit> 以来对工作树中跟踪文件的任何更改都将被丢弃。以写入任何跟踪文件的方式任何未跟踪的文件或目录都将被简单地删除。

--merge

重置索引并更新工作树中 <commit> 和 HEAD 之间不同的文件,但保留那些索引和工作树中不同的文件(即,尚未添加的更改)。如果 <commit> 和索引之间的另一个文件具有未暂存的更改,则重置将中止。

换句话说,--merge 类似于 git read-tree -u -m <commit> ,但是会携带未合并的索引条目。

--keep

重置索引条目并更新工作树中 <commit> 和 HEAD 之间不同的文件。如果 <commit> 和 HEAD 之间不同的文件具有本地更改,则重置将中止。

--[no-]recurse-submodules

当更新工作树时,使用--recurse-submodules也会根据超级项目中记录的提交,递归地重置所有活动子模块的工作树,同时设置子模块的head在该提交时被分离。