Git应用于Android项目的基本知识。
常常将git,repo和gerrit三种工具配合起来使用,使Android开发中的部分工作自动化。并适应敏捷项目管理的需要。
repo是Google在git上开发的版本库管理工具,是用Python编写的脚本库,用来统一管理多个git仓库。
gerrit是适用于git项目的基于WEB的代码review及权限控制系统。它让有权限的用户可以提交代码,提交的代码review和verify后会自动合并。
Git本地库分成工作目录,索引和仓库。假如说我们的产品是“修改”,我将其理解为,在一个工作台上产生修改(工作目录),给一批修改加上标签(索引),最后组成一个批次入库(仓库)。git的基本操作就是如何让修改在这三部分间双向传递。
给修改加上标签:git add,可以添加文件,文件夹,或者.(当前目录所有内容)。相对应的,git reset HEAD 可以去掉标签,同样可以添加文件,文件夹或者所有内容。
注意,如果“修改”是删除文件,使用git rm 而不是git add。
这里的HEAD, 我将其理解成最近一次提交的批次,reset HEAD并不会改变本地文件。
另外,一次提交之前可以只add部分文件,没有加标签的文件不会入库,也不会受影响。
让一批加上标签的修改入库并统一成一个批次:git commit。同样,也可以反悔:git reset --soft HEAD^,这样上次入库的文件会回到加上标签但未入库的状态,上次提交的信息也没有了。
有时候,我们多次提交但想让这些修改在仓库中显示成同一个批次,此时可以用git commit --amend。
在这里,HEAD、HEAD^和HEAD~2分别表示最近一次,倒数第二次和倒数第三次提交批次。--soft表示工作目录和索引中的文件完全不会改变,只会改变仓库中的提交批次记录。相反,如果用--hard,那么本地文件就会变成和仓库中该批次文件一样。
用git checkout可以将仓库中的文件取出来,覆盖工作台上的文件。但是,已经加标签(git add)的修改是不会被覆盖的。
以上是我理解的git基本操作,虽然不准确,但确实对我使用git有帮助。这些都是在同一个分支上操作。而git的精华是多分支并行构建一个项目。下次有时间再来学习对git分支的基本操作。