前面我们学习了Git最基本的用法,包括安装Git、创建代码仓库,以及提交本地代码。下面我们将学习Git更多的使用技巧,在开始之前,我们先给一个项目创建代码仓库,这里选择在ProviderTest项目中创建,打开Git Bash,进入到项目的根目录下,然后执行:git init命令,如下所示:
一、忽略文件
我们在提交项目的时候,不是所有的文件都需要加入到版本控制当中,Git提供了一种可配性很强的机制来允许用户将指定的文件或目录排除在版本控制之外,它会检查代码仓库的目录下是否存在一个名为:(.gitignore)的文件,如果存在的话,就去一行一行读取这个文件中的内容,并把每一行指定的文件或目录排除在版本控制之外。注意:(.gitignore)中指定的文件或目录是可以使用“*”通配符的。
Android Studio在创建项目的时候自动为我们创建了两个(.gitignore)文件,一个在根目录下,一个在app目录下,首先看一下根目录下的(.gitignore)文件(如图所示),通常这部分内容都是不用添加到版本控制当中的,简单看一下这个文件,除了:(*.iml)表示指定任意以(.iml)结尾的文件,其他都是指定的具体的文件名或者目录名,上面配置中的所有内容都不会被添加到版本控制当中,因为基本都是一些有IDE自动生成的配置。
再看一下app目录下的(.gitignore)文件:由于app目录下面基本都是我们编写的代码,因此默认情况下只有其中的build目录不会被添加到版本控制当中。
我们完全可以对以上两个文件进行任意的修改,来满足特定的需求,比如说,app下面的所有测试文件都只是给我自己使用的,我并不想把他们添加到版本控制中,那么就可以这样修改app/.gitignore文件中的内容:只需要添加两行配置,因为所有的测试文件都是放在这两个目录下的。
现在我们就可以提交代码了,先使用add命令将所有文件进行添加,再执行commit命令完成提交,如下所示:
二、查看修改的内容
在进行了第一次代码提交之后,我们后面还可能对项目不断地进行维护或添加新功能等,有可能到后面我们就忘记前面修改了什么东西了,这时候可以使用Git来查看自上次提交后文件修改的内容。
查看文件修改情况的方法非常简单,只需要使用status命令就可以了,在项目的根目录下输入命令:git status,然后Git会提示目前项目中没有可提交的文件,因为我们刚刚才提交过,现在对ProviderTest项目中的代码稍做一下改动,修改MainActivity中的代码如下:
这里我们仅仅在添加数据的时候,将书的价格改为了55.55,然后依次输入命令:git status ---> git diff
如果我们想要查看MainActivity.java这个文件的更改内容,可以使用如下命令:
git diff app/src/main/java/com/example/providertest/MainActivity.java
其中减号代表删除部分,加号代表添加的部分,从图中我们明显地看到价格修改成了55.55.
三、撤销未提交的修改
有时候我们的代码可能写得过于草率,以至于原本正常的功能,结果反倒被我们改出了问题,遇到这种情况,只要代码还未提交,所有修改的内容都是可以撤销的。比如在上一节中我们修改了MainActivity中一本书的价格,现在想要撤销这个修改,就可以使用checkout命令,用法如下:
git checkout app/src/main/java/com/workspace/hh/providertest/MainActivity.java
执行这个命令后,我们对MainActivity.java这个文件所做的一切修改就应该都被撤销了。重新运行:git status 命令检查一下,结果如图:可以看到,没有任何可提交的文件,说明撤销成功了。
不过这种撤销方式只适用于那些还没有执行过add命令的文件,如果某个文件已经被添加过了,这种方式就无法撤销其更改的内容。解决办法是:先对其取消添加,再撤回提交,取消添加使用的是:reset命令。用法如下:
git reset HEAD app/src/main/java/com/workspace/hh/providertest/MainActivity.java
然后再运行一遍:git status命令,你就会发现MainActivity.java这个文件重新变回了未添加状态,此时就可以使用checkout命令来将修改的内容进行撤销了。
四、查看提交记录
当一个项目开发了几个月之后,我们可能已经执行过上百次的提交操作,可能早就已经忘记了每次提交都修改了哪些内容,这个时候可以使用log命令来查看历史提交信息。用法如下:
输入:git log,我们看到,提交记录包括:提交id、提交人、提交日期、提交描述这4个信息。