Android Studio Git初体验

来源:互联网 发布:directx12优化 编辑:程序博客网 时间:2024/06/05 11:28

写这一篇呢就是要给自己提个醒,不会的一定要及时问,不要自以为然,最后给自己埋下一个坑。

git我用的是Git bash+Git extensions图形可视化工具。加入项目之初,就用这两个工具去clone了一份项目到本地。项目文件包括后台,微信,网站,IOS和Android的几大分支。

于是我就心满意足地进行开发,在Android Studio中就可以导入项目了,当时为了方便,直接open打开了Android目录的文件。。。。。
这就是大坑,然后呢,我就开始写layout,类,适配器,接口(幸好开始写得不多)。由于前期项目需求还一直在变,我就没再开发,等正式定下需求后,我修改了一下代码就要提交了。然而这时候就出现各种问题我都不知道如何解决,怕会引起Git冲突等等.如图:

这里写图片描述

Configure后,就到了我迷茫的地方。本来有一个现成的git却不能使用,这不科学!!!
这里写图片描述

后来啊后来,百度了很久都没有人遇到这种情况。。。。
然后我就去问了下师兄,师兄说你直接去Android Studio 里面import project,然后会有add root 提示,点击add root 就可以愉快地玩耍了。

我去试了下,果然画风一转,清晰明了的git风格就出来了。一切都变得好简单。今天先记录到这里,明天我来贴图让大家看看风格。
这里写图片描述
看到上面的VCS上下标签了吧。秒懂是吧。

点击下面的commit,新进页面填写从哪个分支到哪个分支,写用户名密码就ok了。
简直绝配。

原来就没用过git, Android Studio也是刚接触不久,但感觉这两样东西确实是神器,大爱啊。但是有一点要时时注意:千万不要给自己设坑,有问题一定要及时记录,及时反馈。

看见上面那个commit按钮了吧,点击后有两个选项:
commit以及commit and push.这里涉及到的是git的一些常识:
git作为支持分布式版本管理的工具,它管理的库(repository)分为本地库、远程库。

提交到远程库必须要关联自己ssh key,不然在pull和push的时候都会出现错误提示:failed:can’t read from remote repositories.
这时最主要的就是检查一下你的ssh executable.
默认的应该是build-in,但却是不能用的。应该选择Native使用本地公钥私钥。
这是我在stackoverflow上面找到的描述。
这里写图片描述

git commit是将本地修改过的文件提交到本地库中。
git push是将本地库中的最新信息发送给远程库。
出现这样一种情况,如果我commit了一些不需要的东西(正常项目只需要上传java和xml文件,有些配置文件是一定不要上传的,比如iml和gradle),我怎么回退这次错误的commit呢?
我当时只是commit而没有push.所以并没有将信息发送到远程库,对于这种情况,有以下两种解决方式:

**

第一种方式 :回退commit操作。

**
工程右键,git—–>Repository—–>Reset HEAD
直接上图了
这里写图片描述

接下来是选择回退的模式:
这里写图片描述
根据–soft –mixed –hard,会对working tree和index和HEAD进行重置:


git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息git reset –soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可git reset –hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容HEAD 最近一个提交HEAD^ 上一次<commit_id>  每次commit的SHA1值. 可以用git log 看到,也可以在页面上commit标签页里找到.

然后就回退到之前版本,重新进行提交就好了。记得选commit and push.

第二种方式 :先pull,解决完冲突,再push(不建议)

在Android Studio我推送时,给出的信息是远程库不接受。
然后我默默去打开Git Extension,直接推送,也是拒绝的。然而给出的原因是我当前版本与远程库的版本不是统一的(别人有传新的东西上去,我没有及时pull下来),于是我去pull了新的版本,处理完冲突(大概就是那是iml文件的缓存之类的操作)再push就可以使用了。估计 Android Studio上被拒绝也是因为这个原因。

对了,在这边也贴一下一个不错的教程,前面我没怎么讲操作流程,不清楚的话可以参考这个博客
http://www.cnblogs.com/bvin/archive/2015/06/22/4592169.html

TIPS:

建议大家在commit之前先pull工程,如果有冲突的话,git会有提示,根据提示操作就可以。一般的冲突就是,远程库某个文件做了改变,你本地也做了改变,解决这个冲突的方法就是右键Git—->Repository—->Stash Change.
然后你就解决这个冲突,此时可以pull工程来刷新了。
最后就是要UnStash Changes来释放,右键Git—->Repository—->UnStash Change.,这一点非常重要,不然你自己写的东西都会不见的。
完成这几步后,你就可以安心地进行commit操作了。
这里写图片描述

如果觉得stash太复杂的话,可以将自己做过改变的文件revert一下(让他回到前一期的版本),前提是你做的这些改变无关紧要,以远程库拉下来的版本为主。

还有就是一些配置文件的改变,不能上传远程库,而且最好在每次完成push其他文件(非配置文件),将这些配置文件移到另外的changelist,以后出现冲突里就不会动到配置文件,问题的解决也变得很简单。

0 0
原创粉丝点击