本文介绍修改文件后,如何使用git diff
命令比较异同,如何提交到本地仓库。
修改文件
假设项目目录下已有test1.txt文件,修改test1.txt,文件原内容:
test1.txt
修改为:
test1.txt
this is a test file
运行一下git status
,将会看到test1.txt被修改了。不过更改只在工作目录中。
可以使用git diff
命令,查看工作目录中发生了什么变化:
$ git diff
diff --git a/test1.txt b/test1.txt
index 79fac64..a2de631 100644
--- a/test1.txt
+++ b/test1.txt
@@ -1 +1,2 @@
test1.txt
+this is a test file
把更改放进暂存区
就像前面章节所做的那样,使用git add test1.txt
命令,把test1.txt的更改保存到暂存区。
此时,如果运行git diff
命令,会发现输出为空,这是因为git diff
只对工作目录中的更改进行操作。
如果想查看暂存区中保存的更改,可以使用git diff --staged
命令,将看到与之前相同的diff输出。
再次修改文件
现在,让我们再次修改文件,test1.txt的内容修改如下:
test1.txt
this is a test text file
如果现在运行git status
,将看到有2个更改,一个是已经暂存的更改,另一个是刚刚创建的更改(目前只在工作目录中)。
可以运行git diff
查看一下,自上次的更改暂存后,发生了什么变化。
$ git diff
diff --git a/test1.txt b/test1.txt
index a2de631..9001e78 100644
--- a/test1.txt
+++ b/test1.txt
@@ -1,2 +1,2 @@
test1.txt
-this is a test file
+this is a test text file
现在,把最新修改保存到暂存区,再次执行git add test1.txt
命令。
提交
接下来,我们把暂存区里的更改提交到本地仓库:
git commit -m "add text to test1.txt"
因为描述信息很简短,只写一行,就直接用命令行添加描述信息了。
暂存区中的更改已经全部提交到本地仓库。
提交记录
要查看提交记录,可以使用git log
命令。
git中的每个提交都有一个唯一ID(哈希值)标识,可以使用这个ID引用一次提交。
git log
会列出所有提交记录,每条记录包含提交哈希值ID、作者和日期,还包含本地仓库的状态,以及关于远程分支的最新本地信息。
执行git log
,查看提交记录:
$ git log
commit 968604b1a77f5c4408882a2162b48f5a1906489f (HEAD -> master)
Author: kevinhwu <kevinhwu@qikegu.com>
Date: Mon Aug 19 16:29:47 2019 +0800
add text to test1.txt
commit 2af8a1974c88caadfeb238a0b8508269b0e99e35
Author: kevinhwu <kevinhwu@qikegu.com>
Date: Mon Aug 19 12:57:09 2019 +0800
add test1.txt
commit e1b9b710a4f4ca900d4fe37b9590f63479fd480d
Author: kevinhwu <kevinhwu@qikegu.com>
Date: Sun Aug 18 11:55:33 2019 +0800
Initial commit
可以看到:
- 有3次提交
- 最早的是初始化提交,由远程仓库完成
- 最近2次,正是我们在本教程中完成的2次提交
注意,你的提交哈希值ID实际值,与本文列出的是不一样的。
比较2次提交之间的区别,是常用操作。比较任意2次提交的区别,可以使用命令git diff <from commit> <to commit>
,新提交在后。
Kevin@qikegu MINGW64 /g/project/git-demo (master)
$ git diff 2af8a1974c88caadfeb238a0b8508269b0e99e35 968604b1a77f5c4408882a2162b48f5a1906489f
diff --git a/test1.txt b/test1.txt
index 79fac64..9001e78 100644
--- a/test1.txt
+++ b/test1.txt
@@ -1 +1,2 @@
test1.txt
+this is a test text file
比较某次提交与前次提交的区别,可以使用命令:git diff <commit>^!
,这里^!
告诉git比较指定提交与前次提交的区别。
现在,更改已经全部提交到本地仓库,可以继续进行git push
,把本地仓库的更改推送到远程仓库。
在下面的图中,表示一个文件变更的不同阶段,以及diff
命令在各个阶段的使用情况。