AndroidStudio第一次提交项目代码到git服务器/github
虽然使用AndroidStudio(以下简称as)开发并使用git管理代码已经有很长时间,但是第一次提交项目到git依然会很不顺利,网上的文章或许因为所使用版本比较老,并不一定完全凑效,因此写此笔记做下整理。
首先准备工作git客户端和as客户端是不可少的工具,本次使用的是as2.2.2和git2.10.2;
下载安装后在as里面关联上,点test可以测试一下,弹出版本就说明关联成功

下面我分享三种常见操作方式,以界面交互为主,git命令为辅。
首先说明一点,github算是git服务器的一种,另外还有很多可能会使用到的git服务器,比如常用的GitLab,或者csdn的代码托管服务等等,都是大同小异。这里以github为例,但是as里面是可以直接share 到github,其他地方貌似不可以直接share,参见第三种方法;前两种是都可以通用的。
方法一:先创建项目,后与git连接
1、首先我们创建一个测试项目GitTest,点击VCS--Enable Version Control Integration,在弹出框右边选上Git。这个时候会发现项目会发生几点变化,鼠标右键点击项目出现Git选项;项目文件颜色变为红色;在as右下角出现Git:master;如下图:



2、在github上创建远程代码仓库GitTest,注意这里名字可以和项目名字不一样;登录github,进到个人主页,点击切换到Repositories,然后点new创建。可以写上描述,选择公开或私有,也可以选择为项目添加一个README说明文件,如下图:


3、切回as,那么在提交项目之前要做一件很重要的事情,就是配置好gitignore文件,我们将项目展开会发现as已经帮我们生成了gitignore文件,在项目根目录有一个,在app目录也有一个;那么在app 模块里面很简单只有一行/build,这个我们不用管,那么在项目根目录的gitignore文件里面的内容我们可以看一下

切换到project模式下我们会发现,项目中的文件并不是都变红了,有的是白色的,那么这些没有变红的文件就是被这个gitignore文件忽略掉的,那么我们关心的是哪些文件应该被忽略掉哪些文件不应该忽略?是as能在编译过程中自动生成的文件都不应该提交上去;也就是说我传上去的代码,别人拉取下来通过as编译能够正常跑起来,并且这个时候本地不产生可以提交的文件;这些文件主要包括.idea、.gradle、iml文件、以及配置sdk路径的local.properties等等,as为我们自动生成并不是很全面,这里推荐一个github上列出来的https://github.com/github/gitignore/blob/master/Android.gitignore我们也可以使用这个。这个文件之前是把整个.idea文件夹都忽略的,后来又改成只忽略其中部分文件,不知道为什么,我认为只要是可以自动生成的就可以忽略,即时每个人生成的都一样。
4、准备好了之后下面开始提交代码了,在项目根目录上右键Git-->Add将代码添加到索引库,然后Git-->Commit Directory提交到本地仓库;到此为止我们依然没有和github联系上;
5、将代码push到远程仓库Git-->Repository-->push到远程仓库,在弹出框里面输入之前创建的git远程仓库地址https://github.com/AndSync/GitTest.git,点OK,如果没登录会提示登录,以前登录过就不提示了,完了之后点push。

这时候在右上角会有一个提示push rejected ,原因是我们本地仓库的master主线并没有和远程仓库的master主线绑定上,那么首先Git->Repository-->fetch一下,获取到远程master分支,这时候发现右下角有变化了,显示出来了origin/master,

然后我们需要通过命令来完成绑定,在Terminal里面可以输入命令,这段命令怎么来的,其实如果你不用as可视化工具 而是用命令去 git push 的话是会提示给你的,告诉你应该输什么命令,git还是很智能的,建议还是多用命令来操作。
git branch --set-upstream-to origin/master
然后我们再去push 这时候可以了,会弹出一个merge提示框,我们点merge又报错了,哦是不是因为创建项目的时候有一个文件README,那我们pull一下看行不行,发现也报错,于是我们要祭出另一句git命令来解决这个问题

git pull --allow-unrelated-histories
允许拉取不相关的历史记录,把README拉取过来了,当然如果你创建项目的时候没有创建README可能没这么麻烦,这时再去push就OK了。整个过程到此结束
方法二:先创建连接,后创建项目
这个怎么玩的呢,简要说明一下,之前不是有安装git客户端,应该在任何地方鼠标右键都有一个菜单Git Gui here -->Clone Existing Repository

注意本地路径文件夹GitTest2事先不要创建

clone完了之后,在这个目录下会有一个.git文件夹,和readme文件,那么到这一步我们也可以发现这种方式貌似并不适用于新建项目,因为这个文件夹里面有文件as将无法在这个目录下创建文件,那么这适用于从别的地方考过来一个已有的项目放到这里,之后从as打开项目进行add、commit、push等操作即可。
方法三:直接share到github
很简单,无需先在github上创建项目,直接share,如果需要修改gitignore文件可以先修改下。
1、VCS-->import into Version Vontrol-->Share Progect on Github

2、登录帐号

3、填写信息

AndroidStudio第一次提交项目代码到git服务器/github的更多相关文章
- git学习------>从SVN迁移到Git之后,项目开发代码继续在SVN提交,如何同步迁移之后继续在SVN提交的代码到Git?
最近逐步逐步的将公司的项目都从SVN往Git迁移了,但是想团队成员都能够一步到位就迁移到Git是不可能的,因为还有大部分人都还不会Git,所以整个过渡过程估计得大半年. 因此导致虽然项目迁移过来了,但 ...
- IDEA中一个工程多个模块(module)分别提交到不同的git服务器
说明:本文档适用于一个工程多个模块的项目,每个模块对应不同的git服务器地址. 一.将本地项目导入到git服务器 1.打开 File -> Settings,选择 Version C ...
- Linux环境下第一次提交项目
Linux环境下第一次提交项目: vi 日记 新增一个文件名为“日记”的文件 git status 工作区的状态 git add 日记 建立跟踪 git commit 提交变更 ----------- ...
- Git命令提交项目代码
Git客户端安装 今天就结合`GitHub`,通过`Git`命令,来了解如何实现开源代码库以及版本控制 GitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git 作为唯一的版本库格式进行托 ...
- 项目实践中--Git服务器的搭建与使用指南(转)
一.前言 Git是一款免费.开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理.在平时的项目开发中,我们会使用到Git来进行版本控制. Git的功能特性: 从一般开发者的角度来 ...
- 如何用git将项目代码上传到github
注册账户以及创建仓库 要想使用github第一步当然是注册github账号了.之后就可以创建仓库了(免费用户只能建公共仓库),Create a New Repository,填好名称后Create,之 ...
- 项目实践中--Git服务器的搭建与使用指南
一.前言 Git是一款免费.开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理.在平时的项目开发中,我们会使用到Git来进行版本控制. Git的功能特性: 从一般开发者的角度来 ...
- [转]如何用git将项目代码上传到github
注册账户以及创建仓库 要想使用github第一步当然是注册github账号了.之后就可以创建仓库了(免费用户只能建公共仓库),Create a New Repository,填好名称后Create,之 ...
- 将项目初始化到git服务器
使用的是GitLab来管理Git服务器; 步骤: 一. 先在服务器上创建一个新的项目(GitLab右上角的New project)
随机推荐
- Tyvj1052(树形DP)
P1052 没有上司的舞会 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 Ural大学有N个职员,编号为1~N.他们有从属关系,也就是说他们的关系就像一棵以 ...
- hdu 最短路模板题 java
最短路 Problem Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在 ...
- Flutter实战视频-移动电商-13.首页_广告Banner组件制作
13.首页_广告Banner组件制作 主要是做这个小广告条. 其实就是读取一个图片做一个widget放到这里 使用stlessW快速生成 定义一个变量存放图片的url地址: 这样我们的广告条就写完了 ...
- [教程心得] Flash AIR 调用exe/bat且可以传参
Flash AIR 如何调用exe/bat?并且有些情况下需要传参,如何传参呢? 看下面例子: cmd传参打开系统软键盘(参考http://bbs.9ria.com/thread-181265-1-1 ...
- Excel2007格式分析和XML解析
1. excel2007是使用xml格式来存储的,把一个excel文件后缀改为.zip,打开之后就直接可以看到一个excel文件对应的xml格式的文件了. 这里面有几部分 对于docProps目 ...
- ASP.NET学习笔记(一)相关概念
ASP.NET 是一个开发框架,用于通过 HTML.CSS.JavaScript 以及服务器脚本来构建网页和网站. ASP.NET 支持三种开发模式: Web Pages MVC Web Forms ...
- E20180715-hm
grapefruit n. 葡萄柚,西柚; 葡萄柚树;
- P4609 [FJOI2016]建筑师(第一类斯特林数)
传送门 没想到连黑题都会有双倍经验的 其实这题本质上是和CF960G Bandit Blues一样的,不过那里是要用分治FFT预处理第一类斯特林数,这里直接打表预处理第一类斯特林数就可以了 //min ...
- [HNOI2010] 平面图判定 planar
标签:二分图判定.题解: 首先可以把题目中给你的那个环给画出来,这样就可以发现对于任意一个图来说,如果两条边要相交,就不能让他们相交,那么这两条边就要一条在里面一条在外面,如果把环画成一条链,那么就是 ...
- IT兄弟连 JavaWeb教程 Servlet会话跟踪 Session常用方法
● public Object getAttribute(String name) 该方法返回在该session会话中具有指定名称的对象,如果没有指定名称的对象,则返回null. ● public ...