虽说在本命年的单身汪并不是一帆风顺,但从上海到杭州,跳槽找工作倒还是特别顺畅,一度让我有种错觉今年Android行情怎么这么好,后来一想,可能是我变(bu)强(yao)了(lian)。这不,又来到新公司了,入职第一天,一切准备妥当,向部门的前辈要到了项目的Git地址,打算先熟悉公司代码。于是我极其熟练的打开Sourcetree,准备clone。结果被前辈狠狠的鄙视了一把:“Android Studio那么强大,你怎么还用这种工具!”这是原话,于是当晚我便踏上了在Android Studio使用Git之路。果然很强呀,久久不能平静,于是边学边记录,在两周的熟悉之后,决定在此做个总结。
安装与配置
先说下我的操作环境:macOS、Android Studio是3.1.4、Git版本是2.15.1
安装Git
因为是很久以前就安装过了,所以这里给个链接:安装Git,也可以自己百度,谷歌自行安装。 安装成功之后,可以在命令行里输入下面的命令来配置自己的姓名和邮箱:
git config --global user.name "姓名"
git config --global user.email "邮箱"
Android Studio上配置Git
首先在AS上打开Preferences(command + ,
),接着点击Version Control --> Git
在Path To Git Executable
上输入Git的存放位置,如下图:
Test
按钮,如果配置成功会出现下面的成功提示:
配置GitHub账号
按照下图配置你的GitHub账号,输入完成之后再点击Test
按钮,如果账号密码正确的话也会提示成功
本地仓库相关操作
好,既然配置OK了。本地玩一下先,看看怎么创建本地仓库、如何提交、怎么增删改查本地的分支,怎么合并本地分支,先从这些基本操作入手。
创建本地仓库
对新建的项目或者写好的项目,都可以通过如下操作进行。
点击菜单栏上的VCS
,进行下面的操作:
忽略文件
git在初始化一个仓库的时候,都会自动生成一个.gitignore
文件,这个文件就是用来忽略那些不用加到仓库的文件。我们这个工程中也生成了两个.gitignore
文件。一般情况下,可以不做修改,如果有需求也可以修改:
添加文件
因为是新项目还没有将文件加入仓库,所以这些文件名才都是红色,我们可以使用Android Studio的add方式进行添加,有4种,咱们这里可以随便使用一种,比如选中项目的根目录,右键选中Git
,再选择Add
:
Yes
便可以:
提交文件
这个很简单,我们可以使用commmand + k
,会出现commit的窗口。这时,便可以选择咱们想要提交的文件,填写提交的信息,在Author
那里可以填写提交本次提交的操作者名字,如果不填写的话,就会默认是之前配置Git的姓名和邮箱。
Commit
之后,文件名的颜色就会再次变为白色啦,提交成功之后点击咱们AS屏幕下方
LogCat
旁边的
Version Control
工具按钮,还可以发现很多便利的操作,像
Local Changes
可以查看有哪些本地文件发生了改变,
Log
可以看到这个仓库的提交信息,
Console
便是控制台,很贴心有木有?对于习惯命令行的童鞋可以直接在这里用git命令进行操作
查看当前分支
查看都是最简单的,在AS上也是如此,在主界面的右下角显示Git:master
就表明当前的分支是master分支,没有创建新分支的情况下,默认便是master分支。
创建本地分支
我们都知道,master分支是用于产品发布并且已经封版稳定的,在平时的开发中是不会直接使用master,我们一般会有一个dev分支进行开发,如果需要加新功能,还会在dev分支中再创建一条拥有该功能的分支,名字可以随意。
在AS中我们可以非常方便的管理我们的分支,依然是在主界面的右下角,点击当前分支,选中+ New Branch
:
dev
,勾选
Checkout branch
(默认是勾选状态)再点击
OK
,这样就将dev分支创建好了,并且会处于该分支中,如果有新功能也可以以同样的步骤创建其他分支,可以看到我们现在有三个分支:master、dev、dev1:
切换本地分支
选中其他分支,点击Checkout
便可以完成切换,so easy~
合并本地分支
当我们在dev分支完成某个功能,或者修复某个Bug,提交后如何合并到master分支呢?这里做个最简单的操作,我们在dev分支修改了activity_main的文件里的TextView的文案显示,然后add
-->Commit
,再切换到master分支,选中dev分支点击Merge
,就将本地dev分支合并到本地master分支了:
删除本地分支
好,我们新功能完成了,Bug也修复了,这时那个分支便不再需要了。为了便于分支管理,我们可以将该分支删掉,如下图,选中dev1分支,点击Delete
,拜拜了,您嘞,直接干掉。
远程仓库相关操作
创建远程仓库
一般我们在工作中,如果不是新项目的话,项目的Git地址都是有的可以直接找负责人要,创建远程仓库其实也很简单,无论在GitHub、GitLab或者码云上一般都是Create a new repository
,都是比较简单的小白式操作,但是在工作中需要加相关权限,就不细致讲了。之前一直在码云上玩,本次决定在GitHub上,直接在GitHub上创建了一个新的公开库:
clone项目
使用Git clone项目到本地是非常简单的,熟悉项目代码的第一步,首先得有项目。在刚才创建好的仓库中,点击Clone or download
,再点击地址旁边的那个小书页一样的图标复制地址即可:
VCS
-->
Git
-->
Clone
,然后在地址栏把刚才复制的地址粘贴上去:
点击Test按钮,测试是否通过,如果成功,便可以clone导入刚刚的项目啦~
将代码推送到远程仓库
一般情况下,我们clone下来的仓库里都是以前的项目,我们便可以熟悉代码,或者正常开发了,如果是新仓库,我们便可以在此仓库下创建Android项目,创建好之后,我们可以add
-->Commint
进行提交,再使用快捷键command + shift + k
进行Push
操作:
拉取远程仓库变动代码
在开发中,同一个项目一般是团队一起开发的,所以我们也要养成好的习惯,Commit
之后,在Push
之前我们要习惯性的Pull
一下代码:点击菜单栏的VCS
-->Git
-->Pull
,点击刷新按钮之后再选择所要Pull
的远程仓库:
Push
,一定要保证远程仓库,拉下来的代码是能完美运行的。
创建远程分支
直接Push,我们会发现Push带远程master上,这里我们可以修改:
改成dev,点击Enter,然后Push,这样远程就有了分支dev。这里有个小技巧,如果我们在本地dev分支上进行Push,会自动创建远程dev分支。我们在GitHub上也可以看到新增一条分支dev: 同样在AS上也可以直接查看:合并远程分支
这个有两种方法,可以在GitHub上进行合并,也可以在AS上分别Push到不同的远程分支,感觉比命令行简单啊有木有。很明显的两条分支融汇一点:
删除远程分支
点击 origin/dev
,直接删除就好了。
其他重要操作
解决冲突
冲突嘛,在所难免的,基本上每天或者定期选一个时间和同事一起进行代码的合并是最好的啦,可以一定程度上避免问题出现,这里演示一下,在AS上我们怎么解决冲突,同时修改 REDEME.md
。在Pull
的时候发现冲突:
Merge
:
可以看到三个文件呈现在屏幕上。中间的文件是最后的结果,左边是当前分支,是咱们的修改,右边的是拉下来的分支,是对方的,还可以发现在修改过的每一行中都存在一个
X
和
>>
符号,点击
X
表示不需要这一行的修改,点击
>>
表示接受这一行的修改。我们也可以像在编辑器中那样复制、粘贴、编辑内容,解决之后可以点击
Apply
进行保存,如果你不想保存,那就点击
Abort
终止此次修改。
这里咱们都要(小孩子才做选择,我是成年人,我都要,哼),然后再运行项目,看是否有问题,如果确保没有问题了就可以再次
Commit
-->
Push
完成之前的操作。查看Log也可以看到每次的合并日志:
创建Tag
git上的标签一般用于标记版本,例如,当发布新版本后,我们将该版本的代码打上Tag,方便区分和管理。
打Tag前肯定要将代码提交到远程仓库上,正常操作之后,我们继续VCS
-->Git
-->Tag
:
Tag Name
表示Tag名称
Commmit
里填提交记录id,这个id可以在Log中查看:
可以填也可以不填,如果不填,这个Tag会与最近的提交记录绑定,填了就会和指定的提交记录绑定。
点击
Validate
可以查看指定提交记录的变动。
Message
里是描述这个Tag信息的。
最后都填好后,点击
Create Tag
,便会创建本地Tag,此时并没有提交到远程噢:
然后,老规矩,
Push
,这里要注意,一定要勾选
Push Tag
,分支选择
All
或者
Current Branch
都行的,根据需求来。
如此,我们远程便也创建了Tag,可以再GitHub上进行查看:
代码回滚
有意思的来了,如果新开发了一个功能,上线后发现很鸡肋,这个功能直接砍掉,我们该怎么办呢,这个时候就需要Git的回退了,AS中也为我们提供了两种回退方式:Git revert
和Git reset
。
Git Revert
我们可以打开Log找到那个功能的提交记录,点击Revert
Git Reset
我们可以打开Log找到那个功能的提交记录,点击Rest Current Branch to Here...
Soft
、
Mixed
、
Hard
、
Keep
。
Soft
:文件内容不会变化,之前提交记录的修改还是在暂存区,可以直接再提交一次。Mixed
:文件内容不会变化,之前提交记录的修改不在暂存区,需要添加到暂存区才能提交。Hard
:文件会回滚到我们选定的提交记录的代码状态,之前提交记录的修改和还没来得及提交的修改都会丢失。Keep
:文件会回滚到我们选定的提交记录的代码状态,之前提交记录的修改会丢失,但还没来得及的提交的修改可以储藏(Stash)起来,待重置之后反储藏(Unstash)恢复。
其实无论选择哪个,这个提交记录都将删除。
后记
因为工作需要,所以也是尽可能的熟悉这些基本操作,更多高阶的玩法可能还需要以后慢慢挖掘,Android Studio更多的功能也需要慢慢掌握。