查看已暂存和未暂存的修改
可以使用 git diff
命令。那么 git diff
到底比较的是哪个两个文件之间的差异呢?
git diff
:查看当前工作区(workspace) 和暂存区(index) 的差异;git diff --cached
:查看暂存区(index) 和本地仓库(local repositorty) 的差别git diff HEAD
:查看当前工作区(workspace) 和本地仓库(local repository) 的差别,HEAD
指向的是本地仓库(local repository
) 中最新提交的版本。
HEAD -> 表示上一次的 commit 版本
HEAD~n -> 表示第上 n 次的 commit 版本,这里的 n 是大于等于 1 的整数
了解了基本概念之后,我们来谈一谈犯错误之后如何撤销的问题。首先,我们要了解如何检查这 3 个步骤当中每一个步骤修改了什么,然后才好判断有没有修改成功。检查修改的二级命令都相同,都是 git diff
,只是参数有所不同。
已修改,未暂存
git diff
首先,对文件进行了修改,但是还没有做 git add .
之前,我们如何检查有哪些修改:
这里可以看出在原文件中添加了 修改文件
四个字。
已暂存,未提交(执行了 git add 操作)
git diff --cached
现在我们先把修改放入暂存区。执行 git add .
,然后执行 git diff
,发现没有任何结果。这说明 git diff
这个命令只检查我们的 工作区和暂存区
之间的差异,如果我们想看到 暂存区和本地仓库
之间的差异,就需要加一个参数 git diff --cached
。
已提交,未推送
git diff master origin/master
现在,我们把修改从 暂存区提交到本地仓库
,再看一下差异。先执行 git commit
,然后再执行 git diff --cached
,没有差异,执行 git diff master origin/master
,可以看到差异。
在这里, master
就是你的本地仓库 ,而 origin/master
就是你的远程仓库 , master
是主分支,因为我们都在主分支上工作,所以这里两边都是 master
,而 origin
就代表远程。
比较多次代码之间的差异
# 比较上一次和本次代码之间的差异
git diff HEAD~1 HEAD
# 比较前第三次与本次代码之间的差异
git diff HEAD~3 HEAD
# 前第 n 次代码
HEAD~n
git diff
和 git diff HEAD -- file
区别
- HEAD:指向的是版本库中的最新版本;
- file:指的是当前工作区中的指定文件
// 本地仓库也就是版本库
// 以下命令查看当前工作区和本地仓库里面最新版本的区别
git diff HEAD -- file
SHA
关于 SHA,其实就是每次执行 git cimmit
之后生成的 cimmitId。使用 git log
命令可以看到每次提交的 SHA。要比较两次提交之间的差异,可以直接执行:
git diff SHA1 SHA2
# 其中 SHA1 和 SHA2 是两次提交(commit)的标识
提交更新
git commit -m "说明"
执行 git commit
命令后,可以看到,提交后 git 会告诉你当前在哪个分支(master) 提交的,本次提交的完整 SHA-1 校验和是多少(463dc4f),以及在本次提交中,有多少文件修改过,多少行添加和删改过。
跳过使用暂存区域
#给 git commit 加上-a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤。
git commit -am "说明"
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论