Android Studio Git 分支使用实践

会挽雕弓如满月,西北望,射天狼。这篇文章主要讲述Android Studio Git 分支使用实践相关的知识,希望能为你提供帮助。

新公司有些项目是用的 Git,以前公司都是 svn,为了练手 Git,我个人 APP 用到了,但是仅简单的 git pull/push 的使用,并未用到 Git 精髓,只有当项目中用到,才会紧迫去全面学习,所以说,在项目中进步是最快的。
开发场景:远程有主分支 master,提供用户使用的正式的稳定的版本;开发分支 dev,用于日常开发。dev 们可以在本地任意创建自己的 Local Branch,然后合并到本地 master 再提交到远程分支 dev。
命令行实践高手都是直接用命令行,用命令行显得逼格更高。
创建项目首先我创建 android 项目 GitBranchSample, Share Project on GitHub。
查看分支查看本地所有分支:
$ git branch * master

master 分支前的 * 字符,它表示当前所在的分支。
查看远程所有分支:
$ git branch -r origin/master

列出所有本地分支和远程分支:
$ git branch -a

创建本地 dev1 分支
$ git checkout -b dev1 Switched to a new branch ‘dev1‘

本地 master 分支默认就是远程 master 分支,上面命令在此基础上创建本地 dev1 分支,然后切换到 dev1 分支,相当于以下两条命令:
$ git branch dev1 $ git checkout dev1

想从远程分支 dev (远程有该分支)创建本地分支 dev1:
$ git checkout -b dev1 origin/dev Switched to a new branch ‘dev1‘

开发提交随便修改 README.md 文件,然后提交:
add 文件
$ git add README.md

commit 信息
$ git commit -m "branch test" [dev1 8643ecb] branch dev1 2 files changed, 3 insertions(+)

合并到本地 master 分支分支 dev1 开发工作完成,我们就可以切换回本地 master 分支:
$ git checkout master Switched to branch ‘master‘

进行本地分支 dev1 合并:
$ git merge dev1 Updating 82951ea..444bb8e Fast-forward README.md | 1 + 1 file changed, 1 insertion(+)

Fast-forward 信息,“快进模式”合并,这种模式下,删除分支后,会丢掉分支信息,可以用 --no-ff 方式进行 merge :
$ git merge --no-ff -m "merge with no-ff" dev1

如果分支很多,这个分支历史可能就会变得很复杂了,可以使用 rebase,提交的历史会保持线性:
$ git rebase dev1

也是进行本地分支 dev1 合并。
删除本地分支
$ git branch -d dev1

这是删除,如果没有完成合并会有提示,以下是强删:
$ git branch -D dev1 Deleted branch dev1 (was d39f6c3).

创建远程分支 dev直接提交
$ git push origin master:dev

这里冒号可以提交到指定分支,上面命令,把提交本地 master 分支到远程的 dev 分支,远程没有dev这个分支,会创建。
git push origin master

这是本地 master 提交到远程主分支 master,相当于:
git push origin master:master

跟踪远程分支【Android Studio Git 分支使用实践】从远程分支 checkout 出来的本地分支,称为 跟踪分支 (tracking branch)。跟踪分支是一种和某个远程分支有直接联系的本地分支。在跟踪分支里输入 git pull/push,Git 会自行推断应该向哪个服务器的哪个分支更新/推送数据。
手动建立追踪关系:
$ git branch -u origin/dev master Branch master set up to track remote branch dev from origin.

或者:
$ git branch --set-upstream-to origin/dev master Branch master set up to track remote branch dev from origin.

指定本地 master 分支追踪远程 dev 分支。
查看所有分支跟踪关系:
$ git branch -vv * master 444bb8e [origin/dev] branch test

合并远程分支我们把远程分支 dev 合并到 master,怎么做?
1、指定本地 master 分支追踪远程 dev 分支
$ git branch -u origin/dev master Branch master set up to track remote branch dev from origin.

2、更新内容
$ git pull remote: Counting objects: 3, done. remote: Compressing objects: 100% (3/3), done. remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 Unpacking objects: 100% (3/3), done. From https://github.com/WuXiaolong/GitBranchSample 0138684..d0ca159dev-> origin/dev Updating 0138684..d0ca159 Fast-forward README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)

3、开发提交远程分支 dev
修改了 README.md 文件,然后提交:
add 文件
$ git add README.md

commit 信息
$ git commit -m "merge origin/dev" [master 44150b4] merge origin/dev 1 file changed, 1 insertion(+), 1 deletion(-)

进行 push
$ git push origin master:dev Counting objects: 3, done. Delta compression using up to 4 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 310 bytes | 0 bytes/s, done. Total 3 (delta 1), reused 0 (delta 0) remote: Resolving deltas: 100% (1/1), completed with 1 local object. To https://github.com/WuXiaolong/GitBranchSample.git d0ca159..44150b4master -> dev

4、指定本地 master 分支追踪远程 master 分支
$ git branch -u origin/master master Branch master set up to track remote branch master from origin.

5、更新内容
$ git pull Already up-to-date.

6、同样提交远程分支 master
不用 commit ,上面已经 commit 了,也提交给 origin/master,这样远程分支 dev 和 master 就是一样的。
$ git push origin master Total 0 (delta 0), reused 0 (delta 0) To https://github.com/WuXiaolong/GitBranchSample.git 0138684..44150b4master -> master

PS:以上远程分支合并,我不知道是不是正确的方式,望指导。
删除远程分支
$ git push origin --delete dev

或者
$ git push origin :dev

远程分支 dev 将被删除。
Android Studio 实践毕竟我们开发工具是 Android Studio,知道 Android Studio 进行分支开发是必要的。
查看当前分支
Android Studio Git 分支使用实践

文章图片

这个分支指的当然是本地的,默认 master。
创建本地 dev1 分支
Android Studio Git 分支使用实践

文章图片

Android Studio Git 分支使用实践

文章图片

以 origin/master 为基础 checkout 本地分支 dev1。
合并到本地 master 分支同样修改 README.md 文件,add,commit,然后切换到 master 分支:
Android Studio Git 分支使用实践

文章图片

然后合并本地分支 dev1:
Android Studio Git 分支使用实践

文章图片

再 push 就 OK 了。
删除本地分支如上图,有个 Delete 按钮,点击直接干掉。
创建远程分支 dev直接提交,我们会发现是提交到远程 master 上,这里我们可以修改:
Android Studio Git 分支使用实践

文章图片
改成 dev,点击 Enter,然后 Push,这样远程就有了分支 dev。
查看跟踪远程分支如上图可以查看跟踪关系,也可以手动修改。
合并远程分支修改 README.md 文件,add,commit,分别提交到远程 dev 和 master 即可,是不是比命令行简单多了啊。
删除远程分支点击 origin/dev,直接删除就好了。
拓展 git fetch
$ git fetch origin master

下载远程 master 的所有变动到当前分支,与 git pull 区别,没有与本地合并。
查看当前的远程库显示对应的克隆地址:
$ git remote -v

-v 为 --verbose 的简写,取首字母
修改远程仓库地址服务器要换地址了,本地有 clone 出来的 git 厍,则需要修改一下 origin 的地址,以便能继续 push 和 pull,项目所在目录下执行命令行:
git remote set-url origin 新地址

切换分支我们新建一个分支(Branch1)后,这时如果我们要切换到master分支,我们点击Local Branches下面的按钮,然后在其左边会弹出一个对话框,我们点击Checkout就可以将其切换到master分支下了。要明白的是Local是存在本地Repo的,你可以直接进行切换。Remote是远程仓库的,远程仓库的你只能checkout到本地,而不能切换过去。 切换分支,addcommit下,防止代码丢失。
git push origin dev:master
提交本地 dev 分支推送到远程master分支
git push origin dev:dev 提交本地 dev 分支作为远程的dev 分支
git push origin :dev 刚提交到远程的 dev 将被删除,本地还是会保存的


    推荐阅读