环境: win7, Android Studio 1.2.1.1
首先本地电脑要安装好msysGit,它里面自带了Git Bash命令行工具
Android Studio(简称AS) 默认集成了Git插件和GitHub插件,我们直接开始下面的步骤:
1. 打开AS, 配置Git.exe安装路径
File -> Setting -> Version Control -> Git
注意:这里是Git\cmd\git.exe 是cmd目录下的git.exe,安装完msysGit 后安装目录其实有两个git.exe, 一个是在 bin目录下,一个是在cmd目录,这里我们设置cmd目录下的git.exe ( 我不知道为什么是指定此目录下的git.exe )
点击 Test 测试一下, OK 即可。
2. 这里假设你已经用AS打开了一个项目,且你的项目是从远程仓库clone过来的
Eg:
git clone git@bitbucket.org:paul/myproject.git
用AS 打开此项目的时候,AS检测到有.git目录,会自动将Path to Git executable设置成当前Git的命令行路径。
注: 从远程仓库克隆过来的,那么当前仓库就有了远程仓库,默认名是origin,后面我们可以不用添加远程仓库了:
git remote add [remote-name] [url]
3. 如果你的项目还没有生成.git目录
就是说还没有通过git init生成本地仓库,那么我们可以通过AS初始化git项目(git init)
VCS -> Enable Version Control Integration 选择Git
OK 之后 它会在当前工程目录创建仓库,相当于执行了 git init 命令
4. 为Git 添加远程仓库
如果项目不是git clone 过来的,那我们可以添加远程仓库
Android Studio 没有为我们提供GUI 来添加远程仓库,只有通过Git Bash 命令行来执行命令:
$ Git remote add [remote-name] [url]
添加了远程仓库,这样在AS 中我们Push 的时候 就会Push到远程仓库
5. 通过AS 从远程仓库克隆项目到本地
* 1) 从其它Git服务器上克隆Git项目 *
VCS -> Checkout from Version Control -> Git
注意:以上的Git Repository URL
git@bitbucket.org:username/xxxxx.git 其中的username, xxxxx 要以实际情况为准,而且该URL是 ssh协议的,事先要在bitbucket.org配置SSH, bitbucket.org仓库URL默认访问格式是 https://username@bitbucket.org/username/xxxxx.git
2) 从Github 上克隆Git项目
VCS -> Checkout from Version Control -> GitHub
如果AS之前没有配置登录的信息,那么会跳出登录窗口
我们也可以在Settings -> Version Control -> GitHub 配置
一旦克隆完一个仓库,那么此仓库的远程仓库相当于也就有了,远程仓库名默认名是 origin,在Git Bash命令下切换到git工程目录下,可以通过如下命令,查看远程仓库:
$ git remote –v
如果没有任何内容那说明还没远程仓库,那边本地的此仓库可能是通过git init 创建的,而不是git clone
6. AS 提交代码
选中要提交的文件或文件夹
(1) VCS -> Git -> Add
(2) VCS -> Git -> Commit Changes
在提交的时候 如果选择commit (默认是commit) 那只是把代码提交到了本地仓库,如果你想commit的同时将代码推送到远程仓库,那么可以选择 Commit and push 就可以直接push到服务器。
如果你之前的提交都只是commit ,那么后面想推送到远程仓库端,你可以
VCS -> Git -> Push
7. AS 回滚已经commit的代码(revert commit)
VCS ->Git -> Repository -> Reset HEAD
git reset [--soft | --mixed] [-N] | --hard] HEAD~X X:代表次数
soft 仅仅撤销commit而已,不影响本地的文件,也不影响(index)缓存区的任何文件
hard 不仅撤销commit内容,还将本地的文件指向你commit前的版本,同时index也会指向commit前的版本
在AS上面进行的Git操作,实际相当于执行了Git命令, 我们可以直接通过GitBash ,cd到工程目录, 执行对应的git命令即可。
拉取数据Fetch , 只是拉取数据到本地,不合并。
Pull 拉取数据到本地同时进行合并
我们在推代码的时候 一般要先拉取最新代码,在此基础上修改完成后,再推到远程仓库的。