美文网首页
git checkout && git rese

git checkout && git rese

作者: McDu | 来源:发表于2018-03-13 11:07 被阅读33次

    1. git checkout -- filename

    撤销最近一次工作区的修改,git add filename 命令的后悔药
    git checkout --filename 其实是用版本库的文件替换工作区的文件,无论工作区是修改还是删除,都可以“一键还原”。

    git checkout 分支名

    用来切换分支

    2. git reset -- filename

    撤销暂存区的提交,git commit -m 'msg' 的后悔药

    git reset HEAD filename

    撤销暂存区的修改(HEAD 表示最近一次),将暂存区的修改回退到工作区
    git reset HEAD 就是用版本库的内容替换掉暂存区的内容

    在 git 中 HEAD 表示当前版本,指向最新的提交
    HEAD^ → 上一个版本
    HEAD^^ → 上上一个版本
    HEAD^^^ → 上上上一个版本
    HEAD~100 → 往上100个版本

    git reset --hard HEAD^ 回退到上一个版本

    git reset --hard commitId 工作目录也会变
    git reset --soft commitId 工作目录不会变

    --soft – 缓存区和工作目录都不会被改变
    --mixed – 默认选项。缓存区和你指定的提交同步,但工作目录不受影响
    --hard – 缓存区和工作目录都同步到你指定的提交

    3. git reflog

    记录你的每条命令
    假设一个版本被 reset 之后消失在未来,可以通过这个命令找到版本 ID,照样可以 reset 回来。

    4. git diff

    git diff → 工作区 🆚 暂存区
    git diff --cache → 暂存区 🆚 当前分支

    5. git rm filename

    版本库里删除一个文件
    如果在工作区误删,但已经提交到版本库,可以通过 git checkout --file 从版本库恢复到工作区【原理看第一点】

    6. 撤销 git add 的操作

     git reset HEAD .
    
    git reset --mixed 
    文件退出暂存区,但是修改保留
    
    git rm -r --cached dirname
    

    git rm -r --cached dirname

    这个命令是使用过的,git add dirname 之后,发现添加的文件夹是眼花了看错的,于是要把这个文件夹从暂存区删除,git rm -r --cached dirname 可以把特定文件从暂存区删除;
    同样能达到效果的还有 git reset HEAD,区别:

    git reset --hard HEAD 是全局的, 整个repo都reset了
    git rm --cached 是只针对参数指的文件的


    代码回滚:Reset、Checkout、Revert 的选择

    相关文章

      网友评论

          本文标题:git checkout && git rese

          本文链接:https://www.haomeiwen.com/subject/rbcegttx.html