- 我们去修改一下项目里的 MainActivity.java 这个文件,将AppCompatActivity修改为BaseActivity。
- 回到终端工具,然后用
git status
去查看一下,会提示说 Changes not staged for commit ,这里有一些要提交的修改,不过还没有把它们放在提交暂存区里面。modified ,修改的文件是 MainActivity.java 。 - 我们来查看一下这个文件修改前还有修改后的区别,可以使用
git diff
命令,在它后面可以加上想要查看区别的具体的文件的名称,不加的话,会显示所有修改文件的区别。git diff MainActivity.java
- 这行命令会去对比 MainActivity.java 这个文件,在 repository 里面版本,跟在工作目录里面的版本之间的区别。这里显示的是,去掉了 AppCompatActivity 这行代码,减号,表示去掉了这行代码。然后添加了一行新的代码 BaseActivity 。虽然这里我们只修改了这个 BaseActivity ,不过对于 git 来说,它是一行一行对比的。git 还会在这里给出修改前后的几行代码作为参照。
- 接下来,我们把这个修改添加到暂存区,
git add MainActivity.java
,查看一下状态git status
显示一个要提交的修改,然后再用git diff
去查看一下区别。 - 这回没有显示了,因为我们已经把修改添加到了暂存区,所以,再次比较的时候,会用暂存区里面的东西跟工作目录里面的东西进行比较。
- 下面我们再去修改一下 MainActivity.java ,添加一个Toast,
Toast.makeText(this,"Toast",Toast.LENGTH_LONG).show();
- 回到终端,先查看一下状态
git status
会发现,暂存区里已经有了一个修改,是来自 MainActivity.java 这个文件,还显示,有些修改没有放到暂存区,这个修改同样是来自 MainActivity.java 这个文件。 - 这是因为,第一次修改了 AppCompatActivity 为 BaseActivity,这个修改已经放到了暂存区准备提交,然后,又给 MainActivity.java 添加了一行Toast,这个修改还没有放到暂存区里。
- 再去对比一下跟工作目录里的区别
git diff
- 这里对比的结果是,暂存区里的东西跟工作目录的对比。如果你想比较的是 repository 跟暂存区的东西,可以使用一个 staged 选项。
git diff --staged
- 在 repository 跟暂存区里面,MainActivity.java 的区别是,AppCompatActivity修改为了BaseActivity,我们先提交一下暂存区。
git commit -m '修改了 MainActivity.java中的继承'
- 运行命令
git status
显示还有一处修改没有提交 - 运行命令
git add
添加一下这个修改,git add MainActivity.java
,然后再提交一下git commit -m '为 MainActivity.java 添加了 Toast'
- 再去查看一下提交的日志
git log
这里会显示出我们做的这三个提交的信息。
Git的四个工作区域
- Workspace: 工作区,就是工作存放项目代码的位置。
- Index / Stage: 暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息。
- Repository: 仓库区(或版本库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本。
- Remote: 远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换。(后续会单独介绍)
结束语
本篇内容的介绍了Git的git diff 命令,并理解了工作区(Workspace)、暂存区(Index / Stage)、仓库或版本库(repository)的理解 ,后面的文章会带来Git的详细使用。如有欠缺或不对的地方欢迎评论,谢谢观看。