Android-stduio中Git使用总结

这篇博客总结了工作中使用Android-Studio集成的Git插件进行版本控制的一些技巧。

使用Git出现master-> Empty repository

参考博客 Android Studio 使用Git出现master-> Empty repository

在push本地代码到远程仓库的时候 ,git出现了 master-> Empty repository, 根据参考博客的方法解决了这个问题。

为什么会出现这个错误呢? 这是因为本地虽然也使用 git init命令初始化仓库, 但是本地没有做任何提交的操作,自然没法推送到远程仓库。
本地提交一次代码后就可以push本地代码到远程仓库了。

进入当前项目的根目录中, 输入下方命令,初始化本地提交

1
git commit -m "Initial Commit"

此时,可以正常提交代码到远程仓库。

设置本地分支追踪新的远程分支

本地仓库进行更新代码时会报如下错误

1
2
3
4
Can't update: no tracked branch
No tracked branch configured for branch master.
To make your branch track a remote branch call, for example,
git branch --set-upstream master origin/master

大概意思是说:本地分支没有追踪到对应的远程分支。

什么情况下会出现这种错误呢?
在本地新建一个分支,然后直接去更新代码, 这时并没有追踪远程分支,就会报出这种错误。

一个本地分支只能追踪一个远程分支,不可以同时追踪多个远程分支。 例如:自己的本地仓库的master分支,刚开始推送到了远程仓库A, 然后一直使用这个远程仓库更新、代码。有一天,需要将这个仓库提交到一个新的远程仓库B, 此时点击 AndroidStudio 的 VCS ---Git --- push 弹出一个对话框, 将远程仓库地址设置为仓库B的地址, 将代码push到B中。 这时如果点击更新代码的图标,会报上边的错误, 这是因为本地仓库的master分支此时还追踪的是远程仓库A的master远程分支, 只需要执行下边命令将本地仓库的远程分支设置到B的远程仓库分支即可

1
2
3
// origin_PiGit/master:远程仓库的名称   master: 远程仓库的分支名称
// 第二个master: 本地仓库的当前分支
git branch --set-upstream-to=origin_PiGit/master master

扩展

1
2
3
4
5
6
git branch //查看本地分支 *后边的分支为当前所在分支
git branch -a // 查看所有分支
git branch -v // 查看各个分支最后一个提交信息
git branch -vv // 可以查看本地分支与远程分支的追踪关系
例如: master bf46e4a [origin_PiGit/master] dev-master:这是第二次提交
表示本地master分支 追踪的是 远程仓库origin_PiGit的master分支

修改忽略文件后立即生效

参考博客Android Studio .gitignore修改后不生效的问题

AndroidStduio修改.gitnore文件后,发现新增的忽略文件还是原来的颜色,并没有生效, 这是因为git 没有清理 cache 的缘故。

解决方法:
进入项目的根目录执行如下命令

1
2
3
git rm -r --cached .
git add .
git commit -m 'Your commit-msg'

分支的合并

假设有一个名字为dev1的分支,我们可以将分支合并到master,也可以将master合并到分支上。

场景一: 将dev1分支合并到 master

如下图,合并前 master 中包含了内容master分支第五次修改dev1分支中包含了内容dev1 第五次修改

将分支切换到master分支,然后按照下图将dev1分支合并到master分支,

合并后的master分支和dev分支分别如下图:

可以看到合并后,dev1分支中的内容dev1 第五次修改已经被合并到了master分支中,而master中的内容master分支第五次修改并没有被合并到分支dev1中。

合并后的log面板下会显示如下:

场景二: 将master合并到分支dev1

如下图: 合并前,主干master包含了内容 master 第六次修改, 分支dev1包含了内容dev1 第6次修改

将分支切换到dev1分支,然后按照下图将master分支合并到dev1分支,见下图

合并后,分别切换到master分支和dev1分支,可以看到分支dev1中包含了master中修改的内容,master分支并不包含dev1中的内容

合并后的log面板如下:

这里需要注意一点: 分支合并到master,log面板会显示 Merge branch "分支名称" ,而将master合并到分支时log面板会显示 Merge branch master into "分支名称"

博客编号: 19