• Git常见开发场景


    撤销更改

    场景1

    当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file

    # “哎,又有新需求,修改代码”
    # “咦,改乱了,这个逻辑好复杂,重新理一下逻辑,重头来过”
    $git checkout -- file
    
    场景2

    当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD ,就回到了场景1,第二步按场景1操作(git checkout -- file)。

    # “新需求,修改代码”
    # “嗯,对,可以了”
    $git add file
    
    # “哦,NO,不对,这里不对”
    $git reset HEAD
    $git checkout --file
    
    场景3

    已经提交了不合适的修改到版本库时,想要撤销本次提交,那就需要版本回退了,不过前提是没有推送到远程库。

    # “新需求,修改代码”
    # “嗯,对,可以了”
    $git add file
    
    # 提交代码
    $git commit -m "功能完成"
    
    # “完了,完了,这里不对,咋办?”
    $git log
    # 该命令显示从最近到最远的提交日志,如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline只写 --onleline也可以,只会显示commit id 的前几个字符
    $git log --pretty=oneline
    #or
    $git log --oneline #只会显示commit id 的前几个字符
    #和SVN不一样,Git的commit id不是1,2,3...递增的数字,而是一个SHA1计算出来的数字,用十六进制表示。
    
    #【回到过去】
    $git reset --hard HEAD^ #回退到上一个版本
    $git reset --hard HEAD^^ #回退到上上一个版本
    
    #【回到未来】-前提是你git没关,还找到了未来的commit id
    $git reset --hard 752f5c2
    
    #【不小心关闭了git,时空跳跃的按钮不见了】
    $git reflog
    #记录你的每一次命令
    #找到commit id
    

    Tips:

    1、回到过去,用git log可以查看提交历史,以便确定要回退到哪个版本。

    2、回到未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

    删除

    rm file,如果你用rm删除的文件,就相当于只删除了工作区的文件,如果需要恢复,直接使用 git chekout -- file就可以

    git rm file,如果你用的是git rm删除文件,那就相当于不仅删除了文件,而且还添加到了暂存区,相当于执行了以下两条命令:

    # 删除文件
    rm file
      
    git add -A
    

    需要先 git reset HEAD <file>,然后再git checkout -- <file>

    git checkout -- file其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以还原

  • 相关阅读:
    centos6.5 源码安装 gtk 环境
    世界的复杂性
    将 shell 脚本打包到 rpm 包中
    使用 ipdb 调试 Python
    shell 处理 文件名本身带星号的情况
    如果可以更更完善,为什么不呢?
    比较有名的开源项目
    各种小工具合集
    各种版本对应关系
    dns相关
  • 原文地址:https://www.cnblogs.com/chonglu/p/15622031.html
Copyright © 2020-2023  润新知