忽略文件
并不是所有的文件都需要加入到版本控制当中
在Android项目结构中,build目录下的文件都是编译项目时自动生成的,所以不应该将这部分不文件添加到版本控制当中
Git提供了一种可配很强的机制来允许用户将指定的文件或目录排除在版本控制之外,它会检查代码仓库的目录下是否存在一个名为.gitignore的文件或目录排除在版本控制之外
注意:.gitignore中指定的文件或目录是可以使用"*"通配符的
在Android Studio中创建项目时会自动创建出两个.gitignore文件,一个在根目录下面,一个在app模块下面
下面是根目录下的.gitignore文件
*.iml
.gradle
/local.properties
/.idea/workspace.xml
/.idea/libraries
.DS_Store
/build
/captures
.externalNativeBuild
这个文件中,除了*.iml表示指定任意以.iml结尾的文件,其他都是指定的具体的文件名或者目录名,上面配置中的所有内容都不会被添加到版本控制当中,因为基本都是一些由IDE自动生成的配置
下面是app目录下的.gitignore文件
/build
可以看到只有一个build目录在其中,这是因为app模块下基本都是我们自己编写的代码,所以它不会被添加到版本控制当中
当然,我们也可以自定义以上两个文件,比如说,app模块下面的所有测试文件都只是给我们自己使用的,我并不想将它添加到版本控制当中,那么就可以这样修改app/.gitignore文件中的内容:
/build
/src/test
/src/androidTest
查看修改内容
在进行了第一次代码提交之后,我们后续还会对项目进行不断地维护或添加新功能等,比较理想的就是每当完成一个小块功能就执行一次提交。但是如果某个新功能牵扯到的代码比较多,有可能写到后面的时候,我们就已经忘记前面修改了什么东西了。遇到这种情况时不用担心,Git全部会帮我们记着
查看自上次提交之后文件修改的内容只需要使用status命令即可,例如,我们现在对GitTest项目中的代码稍做一下改动,修改MainActivity中的代码,如下:
package company.fenice.gittest;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
public static void main(){
test;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
这里只是添加了静态主类,然后输入:
git status
可以看到,Git提醒我们MainActivity.java这个文件已经发生了更改,要想看到更改的内容,借助diff命令即可:
git diff
其中,减号代表删除的部分,加号代表添加的部分
注意:这里diff命令后需加上文件所在的位置,status命令不需要
撤销未提交的修改
只要代码还未提交,所有修改的内容都是可以撤销的
比如我们要对ManiActivity类中做的修改进行撤销,使用checkout命令即可
git checkout
再可用status命令进行检查,当项目中没有任何可提交的文件,说明撤销成功了
如果文件执行过add命令,那这种方式就无法撤销其更改的内容了,例如我们可以将更改后的MainActivty.java文件进行add命令操作,再执行status命令操作可以发现Git Bush提醒我们要想撤销可使用reset命令进行操作,在这里如果你在执行status命令,你会发现MainActivity任然处于以添加状态,所修改的内容无法撤销
那么撤销执行过add命令的文件需要两步:
- 进行取消操作
- 进行撤回操作
执行reset命令
git reset HEAD
HEAD后需加上撤销文件所在的路径,再执行checkout命令即可完成撤销
查看提交记录
查看提交过的内容,可以使用log命令
git log
每次提交记录都会包含提交id,提交人,提交日期以及提交描述信息这4个信息
当提交记录非常多的时候,如果我们只想查看其中一条记录,可以在命令中指定该记录id,并加上-1参数表示我们只想看到一行记录
而如果我们想要查看这条提交记录具体修改了什么内容,可以在命令中加入-p参数,在这里减号还是代表删除的部分,加号代表添加的部分
我的博客链接: https://fenice-steve.github.io/
我的GitHub链接: https://github.com/Fenice-steve