git diff 命令可以对比两个版本的差异,具体来说包括:
-
本地工作区和暂存区的diff信息:git diff 或者 git diff file
-
暂存区和版本库的diff信息(使用git add 将工作区修改保存到了暂存区后):git diff --cached
-
版本库中不同commit、分支的diff信息(使用git commit 将暂存区修改提交到了版本库):git diff commit1 commit2 或 git diff branch1 branch2
技巧
:一般将要对比的分支/commitid名字放到第二个参数,这样对比起来比较直观。
1、分支diff:
1)基本操作
-
git diff branch1 branch2 --stat //--stat参数,显示两分支简单diff信息
-
git diff branch1 branch2 //显示两分支详细的diff信息
-
git diff branch1 branch2 path //显示两分支指定路径下文件的详细diff信息
-
git diff branch1 branch2 file_name(带路径) //显示两分支指定文件的详细diff信息
注:这里的分支可以是本地的,也可以是远程的(git diff branch1 origin/branch2)
2)查看当前目录和另外一个分支的差别:
我们都知道,正常情况下只有我们用commit命令提交到了版本库,才可以使用git diff branch1 branch2 命令来查看分支间的diff信息。
有的时候我们在工作区开发完(可以保存到暂存区),不想提交到当前分支的版本库中,想查看一下其他分支和我当前改动的diff信息,然后再确定是否要提交到版本库中,该如何做呢?可以使用如下命令:查看当前目录和另外一个分支的差别(当前目录未提交到版本库)
git diff branch
然后使用commit将暂存区修改提交到版本库,就可以使用git diff master test_3查看了:
2、版本的diff:
git diff commitid1 commitid2
上述命令可以查看不同提交的差异。
我们都知道HEAD(大写)可以理解成当前分支的最新提交,HEAD^表示上一个提交(也可以写成HEAD~1),HEAD~n表示当前分支前n次提交。
由于commitid是一个32位的串比较难书写,可以使用HEAD来简单代替:
1.
git
diff
用来比较文件之间的不同,其基本用法如下:
(1)
git
diff
:当工作区有改动,临时区为空,
diff
的对比是“工作区与最后一次commit提交的仓库的共同文件”;当工作区有改动,临时区不为空,
diff
对比的是“工作区与暂存区的共同文件”。
(2)
git
diff
--cached 或
git
diff
--staged:显示暂存区(已add但未commit文件)和最后一次...
git
diff
用来比较文件之间的不同,其基本用法如下。
git
diff
:显示工作目录(working tree)与索引区(即暂存区快照,index,就是
git
add过的)之间的文件变更,即显示未被add的文件变更。
git
diff
--cached 或
git
diff
--staged:显示索引区和最后一次commit(HEAD)之间的文件更改,即显示已add但还未commit的文...
Git
中的
diff
命令
可以显示文件之间的差异,同时-r选项可以遍历两个树对象,同时显示它们的差异。从
Git
中的对象类型上看,一个树对象值只代表版本库中的一个目录层级,它包含该目录下的直接文件和它的所有直接子目录的信息,但不包括所有子目录的完整内容。而树对象引用所有子目录的树对象,所以对应项目根目录的树对象实际上代表某个时刻的整个项目,因此也可以说,
git
diff
遍历两棵树。存在三个可供树或类树对象使用
git
diff
命令
的基本来源:通常情况下,
git
diff
命令
进行树的比较时可以通过提交名,分支名或标签
一、
git
diff
和
git
diff
HEAD – < file> 用法介绍
首先明确:
git
相较于其他版本控制系统的优越性,在于管理和跟踪的是修改,而不是文件。我们引入
git
diff
来说明。
下面是工作区和暂存区的工作示意图
工作区:即用户桌面上的可见可操作目录。
版本库 = 暂存区(stage) + 分支区(master)
一、
git
diff
命令
使用时涉及的概念
workspace:是本地项目的工作目录,属于本地代码发生更新但尚未执行
git
add
命令
时的状态,working tree的状态也随之更新
index:是索引文件,它是连接working tree和commit的桥梁,每当我们使用
git
add
命令
来登记后,index file的内容就会改变,此时index file就和working tree同步了
local repository:是本地仓库,当我们使用
git
commit
命令
提交最新代码时,代码才真正进
git
diff
是一条知道但是……从来没有用过的指令,基本上这也算是好好学习一下这条指令了。以前一般都是在 merge/rebase 的时候被动的看一下两个分支的变化,或者是在 VSCode 里面看一下 staged 的变化,不过这还是稍微有一点局限,比如说:除此之外,如果想要看两个不同分支的区别,以前基本上都是切换到另一条分支然后开始看区别。不过也提到了,如果两个分支都修改了同一个文件(这也是经常会发生的事情),那基本上……就是创建第三条分支,然后 merge 两个分支。
平时我们在本地开发时,一般都是通过 gui 工具(
git
图形化工具)查看文件差异,也就是文件变动内容。但是,我们可能会在线上服务器临时改一些小东西去排查 bug,此时就用不了这些 gui 工具了,那么就可以通过这个
命令
查看我们改动的内容。修改前的文件: 从第 140 行开始显示 3 行,也就是显示 140~142 行。修改后的文件: 从第 140 行开始显示 5 行,也就是显示 140~144 行。100644: 100 代表是普通文件,644 指的是文件权限。查看文件差异(默认查看所有文件的差异)
Git
是一种分布式版本控制系统,被广泛应用于软件开发中,为开发人员提供了一种管理和协作代码的方式。作为一个开发人员,掌握
Git
的基本
命令
是必不可少的。以下是
Git
常用
命令
总结,使用表格形式展示。
命令
描述
git
init 初始化仓库
git
add [file] 添加文件到暂存区
git
commit -m "[message]" 提交代码到本地仓库
git
status 查看工作区和暂存区状态
git
diff
查看工作区和暂存区文件差异
git
log 查看提交历史
git
branch 查看分支
以上是
Git
常用
命令
的简单介绍,但实际上
Git
还有很多高级用法和操作,需要根据实际情况灵活运用。掌握
Git
基本
命令
可以让开发人员更好地管理和协
git
init 把当前的目录变成可以管理的
git
仓库,生成隐藏.
git
文件。
git
add 文件/(* 目录内所有文件) 将文件添加到暂存区去。
git
commit –m “提交注释<必填>” 提交文件 –m 后面的是注释。
git
status 查看仓库状态
git
diff
文件 查看XX文件修改了那些内容
git
log 查看历史记录
git
reset --hard HEAD^
git
reset --hard HEAD
git
文件版本号 回退到上一个版本
git
add
第一次执行会出警告:warning: LF will be replaced by CRLF in readme.txt.
The file will have its original line endings in your working directory.
警告处理:需要配置用户信息
git
config user.name = "zhangsan"
git
config user.email = "itheima@gmail.com"
4. 提交到本地版本库里。
git
commit
5. 推送到远程共享版本库中
git
push origin master
6. 切换用户,拉取最新的文件
git
pull
7. 查看仓库当前状态
git
status
8. 查看修改了什么内容
git
diff