• GIT学习之路第三天 文件操作


    本文参考廖雪峰老师的博客进行总结,完整学习请转廖雪峰博客

    一、版本回退

    1.git log提交日志

    在git中可以通过个git log 命令显示从最近到最远的提交日志。

    $ git log
    commit 8d6d5e1bf04960a41e31fcae166bac74dc6173ea (HEAD -> master)
    Author: bryce <bryceyx@gmail.com>
    Date:   Sun Aug 13 14:37:20 2017 +0800
    
        it is amazing
    
    commit 25840743f1f432860393505acbd081ee947548a3
    Author: bryce <bryceyx@gmail.com>
    Date:   Sun Aug 13 14:35:35 2017 +0800
    
        i love git

    通过git log –pretty = oneline可以化简输出的信息

    2.回退到过去

    $git reset --hard HEAD^
    (HEAD^表示上一版本,也可以HEAD~100表示第100个版本)

    另一种方法是$git reset –hard +commit id
    版本号没必要写全,前几位就可以了,git会自动去查找

    3.恢复到未来

    gitrefloggit reset –hard +commit id即可回到未来。

    小结

    HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset –hard commit_id。

    穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。

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

    二、工作区和暂存区

    • 工作区就是电脑里能看到的目录
      (working directory)
    • 版本库(respository)
      工作区有一个隐藏目录 “.git”,不算是工作区,而是git的版本库。git版本库里存的最重要的成伟stage的暂存区。
      示意图
      第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;
      第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
      因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。

    三、管理修改

    理解Git是如何跟踪修改的,每次修改,如果不add到暂存区,那就不会加入到commit中。
    所以方法是:第一次修改 -> git add -> 第二次修改 -> git add -> git commit

    四、撤销修改

    1.$git checkout – readme.txt
    意思是把readme.txt文件在工作区的修改全部撤销。
    这里出现两种情况:

    • 一种是readme.txt自修改后还没放到暂存区,现在撤销修改后就回到和版本库一摸一样的状态
    • 另一种是readme.txt已经添加到暂存区,又做了修改,现在,撤销修改就回到添加到暂存区后的状态。

    (博主小提示:如果使用的是windows系统,而且是txt文本框的话是看不到这种变化的,垃圾txt,建议去下载notepad++或者其他能功能丰富一点的文本编辑软件)

    • 总之,就是让这个文件回到最近一次git commit 或者git add 时的状态。
      2.git reset HEAD filename可以把暂存区的修改撤销掉,重新放回到工作区。
    • git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。
      小结

    小结

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

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

    场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

    五、删除文件

    当使用命令命令$rm -参数 test.txt,这时出现工作区与版本库不一致
    面临两个选择:

    • 一是确实要删除该文件
      那就用git rm test.txt并且git commit到版本库,文件就从版本库删除了。

    • 另一种情况是删错了
      把误删的文件恢复到最新版本:
      $git checkout –test.txt

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

  • 相关阅读:
    程序员用实力把公司干倒闭了
    可能是把 Java 接口讲得最通俗的一篇文章
    我去,你竟然还不会用 synchronized
    优秀的程序员真的不写注释吗?
    小白,你要的Java抽象类,操碎了心!
    如何将arcgis的mxd文档存储为相对路径
    解决EditorLineEnds.ttr被锁定导致Delphi2006-2010无法启动的问题
    用EXcel制作不同背景的图
    [转载]: delphi中XLSReadWrite控件的使用(1)---简介
    [转载]: delphi中XLSReadWrite控件的使用(2)---delphi XE下安装
  • 原文地址:https://www.cnblogs.com/bryce1010/p/9387415.html
Copyright © 2020-2023  润新知