• git diff命令输出解释 & git checkout还原文件到特定版本


    一、git diff命令输出解释

    1、比较staging area(暂存区)和working area(工作区)的文件

    git diff

    2、master分支和working area的文件 

    git diff master

    3、HEAD指向的内容和working area的文件

    git diff HEAD 

    4、远程master分支比较当前工作区

    git diff refs/remotes/origin/master 

    5、master分支的某个文件的历史版本和working area的该文件的比较

    git diff 0c5ee16a6a4c849d0ae0448caa8ff174399c7c3c test.cpp  

    原始first.txt文件内容:

    first

    修改之后的

    firsat
    second

    index 9c59e24..860035c 100644后面两个数字表示两个文件的hash值(以..分隔),最后一个表示文件的属性,权限(满权限是777)。

    --- a/first.txt其中的---表示修改前的文件

    +++ b/first.txt其中的+++表示修改后的文件

    @@ -1 +1,2 @@分为两部分,第一个是-1,其中-表示修改前,1表示第1行开始(一共就一行);第二个是+1,2,其中的+表示修改后,1,2表示第1行开始的2行(总共2行)。

    -first           # -表示这一行删去了
    +firsat        # +表示这一行加上了
    +second

    差异按照差异小结进行组织,每个差异小结的第一行都是定位语句,由@@开头,@@结尾。

    二、 git还原文件到特定版本

    第一步: 在命令行中输入 git log first.txt 得到该文件的commit 历史。 会得到类似下面的界面

     

    第二步: 复制需要回退版本的hash,在此假设我们回退到 616d3b3a280b32243e9d42fb9a635a7eba16fb60 ,则复制该序列即可

    第三步:checkout 对应版本。格式为 git checkout <hash> <filename>, 在此即为命令行中输入 git checkout 616d3b3a280b32243e9d42fb9a635a7eba16fb60 first.txt

    第四步: commit checkout下来的版本。 如: git commit -m "注释"

    但是需要注意:git log只能获取到当前分支上面的commit id

     

    中间的操作就是换了一个分支branch1,然后提交了两次

    发现commit id就是只会显示本分支上面提交过的,但是你可以把文件回退到其他分支的版本上

    qumh@qumh MINGW64 /f/git_test (master)
    $ git checkout branch1
    Switched to branch 'branch1'
    
    qumh@qumh MINGW64 /f/git_test (branch1)
    $ cat first.txt
    firsat
    second
    third
    qumh@qumh MINGW64 /f/git_test (branch1)
    $ git log first.txt
    commit 6d7d839528f5e43842646e0d2e435b05cca13391 (HEAD -> branch1)
    Author: 屈梦豪(10037598) <qumh@glodon.com>
    Date:   Fri Jul 16 10:22:43 2021 +0800
    
        first3
    
    commit adf45ba60735c252528c4c41c28ca93a1a14ef7f
    Author: 屈梦豪(10037598) <qumh@glodon.com>
    Date:   Fri Jul 16 10:08:32 2021 +0800
    
        first
    
    qumh@qumh MINGW64 /f/git_test (branch1)
    $ git checkout master
    Switched to branch 'master'
    
    qumh@qumh MINGW64 /f/git_test (master)
    $ git log first.txt
    commit 616d3b3a280b32243e9d42fb9a635a7eba16fb60 (HEAD -> master)
    Author: 屈梦豪(10037598) <qumh@glodon.com>
    Date:   Fri Jul 16 10:10:54 2021 +0800
    
        first2
    
    commit adf45ba60735c252528c4c41c28ca93a1a14ef7f
    Author: 屈梦豪(10037598) <qumh@glodon.com>
    Date:   Fri Jul 16 10:08:32 2021 +0800
    
        first
    
    qumh@qumh MINGW64 /f/git_test (master)
    $ git reset 6d7d839528f5e43842646e0d2e435b05cca13391
    Unstaged changes after reset:
    M       first.txt
    
    qumh@qumh MINGW64 /f/git_test (master)
    $ cat first.txt
    firsat
    second
    qumh@qumh MINGW64 /f/git_test (master)
    $ git checkout 6d7d839528f5e43842646e0d2e435b05cca13391 first.txt
    Updated 1 path from 5be811a
    
    qumh@qumh MINGW64 /f/git_test (master)
    $ cat first.txt
    firsat
    second
    third

    如果只想提交暂存区中的一个文件,可以使用下面命令

    git commit 文件名 -m "注释"
  • 相关阅读:
    14.5.5 Creating a File-Per-Table Tablespace Outside the Data Directory
    14.5.5 Creating a File-Per-Table Tablespace Outside the Data Directory
    php session 管理
    php session 管理
    CURD特性
    RabbitMQ学习总结(1)——基础概念详细介绍
    RabbitMQ学习总结(1)——基础概念详细介绍
    RabbitMQ学习总结(1)——基础概念详细介绍
    Java基础学习总结(39)——Log4j 1使用教程
    Java基础学习总结(39)——Log4j 1使用教程
  • 原文地址:https://www.cnblogs.com/kongbursi-2292702937/p/15019197.html
Copyright © 2020-2023  润新知