首页 > 其他 > 详细

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

时间:2021-07-16 15:13:39      阅读:37      评论:0      收藏:0      [点我收藏+]

一、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 "注释"

 

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

原文:https://www.cnblogs.com/kongbursi-2292702937/p/15019197.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!