• git reset
    • 参数

    git reset

    git reset命令用于将当前分支指向另一个位置。

    1. # 将当期分支的指针倒退三个 commit,
    2. # 并且会改变暂存区
    3. $ git reset HEAD~3
    4. # 倒退指针的同时,不改变暂存区
    5. $ git reset --soft HEAD~3
    6. # 倒退指针的同时,改变工作区
    7. $ git reset --hard HEAD~3

    如果不指定回滚的位置,那么等同于撤销修改。

    1. # 撤销上一次向暂存区添加的所有文件
    2. $ git reset
    3. # 无任何效果
    4. $ git reset --soft
    5. # 同时撤销暂存区和工作区的修改,
    6. # 回复到上一次提交的状态
    7. $ git reset --hard
    8. # 撤销上一次向暂存区添加的某个指定文件,
    9. # 不影响工作区中的该文件
    10. $ git reset -- <filename>

    参数

    • soft: 不改变工作区和缓存区,只移动 HEAD 到指定 commit。
    • mixed: 只改变缓存区,不改变工作区。这是默认参数,通常用于撤销git add
    • hard:改变工作区和暂存区到指定 commit。该参数等同于重置,可能会引起数据损失。git reset --hard等同于git reset --hard HEAD
    • -p表示键入交互模式,指定暂存区的哪些部分需要撤销。
    1. # Undo add
    2. $ git reset
    3. # Undo a commit,不重置工作区和缓存区
    4. # 回到 HEAD 之前的那个 commit
    5. $ git reset --soft HEAD^
    6. # Undo a commit,重置工作区和缓存区
    7. # 连续撤销三个 commit:HEAD, HEAD^, and HEAD~2
    8. $ git reset --hard HEAD~3
    9. # 从暂存区移除指定文件,但不改变工作区中的该文件
    10. $ git reset -- frotz.c