Git:Android用小白教程

一、本地仓库操作

配置身份:
git config --global user.name "SkyZhang007"
git config --global user.email "zk827083320@qq.com"
查看当前用户身份:

将上方代码后面的用户名和邮箱删掉即可查询。

创建仓库:
  1. cd到你要创建仓库的项目的目录下,比如cd D:/Doc/ASWorkspace/ActivitySkipTest
  2. 输入命令 git init。这样会在该目录下生成一个隐藏的.git文件夹,用来记录所有git操作。如果想删除本地仓库,删除这个文件夹即可。
ls -al命令查看信息.png
添加本地代码到本地仓库,add只是添加到暂存区,commit才是提交到本地仓库
  • 添加某个文件git add build.gradle
  • 添加某个目录git add app
  • 添加所有文件git add .
  • 提交代码到本地仓库git commit -m "First commit"
  • commit 的 -m 后面必须添加信息描述,不然会被认为不合法。
忽略文件

项目的目录下git init之后会自动生成一个.gitignore文件,它记录和说明了在上传到git仓库过程中不需要上传的文件。

.gitignore.png

通配符*表示所有这个类型的文件都不会提交,例如上图的.iml文件都不会提交。其它的标记的一些文件和目录不会提交。
再来看app文件夹下的.gitignore,新建的默认只有一个/build目录,表示这个文件夹忽略掉。如果想增加忽略文件夹,可以手动添加。比如/src/test就可以忽略src文件夹下的test文件夹下的所有内容。
手动忽略.png

查看修改内容
  • 查看文件修改情况git status:这个命令可以查看上次提交之后本地文件修改情况;
  • 查看文件修改的内容git diff
  • 如果想查看某个文件具体的修改内容,可以这么来输命令:
    git diff app/src/main/java/com/sky/activityskiptest/MainActivity.java
    输出结果减号代表删除的部分,加号代表添加的部分。

例:上次提交(commit -m"xxx")之后,我在MainActivity添加了一行参数

...
intent.putExtra("data",5);
...

然后输入git status查看输出结果,红色文字表示有两个文件被修改了并且未add到暂存区绿色代表已修改并add过了,MainActivity.java被修改是正常的。看图可以发现.idea/workspace.xml文件也被修改了,但是我的.gitignore文件已经声明忽略这个文件了。查了下发现我先add了所有文件,又去copy的.gitignore,所以它的.gitignore不起作用了。使用git rm --cached .idea/workspace.xml来把这个文件移出暂存区,就不会再提示它的更新了。

git status.png

接下来看MainActivity已经被修改了,如果想看具体的修改内容,可以在git里复制MainActivity的路径,然后输入命令
git diff app/src/main/java/com/sky/activityskiptest/MainActivity.java看结果:

git diff.png

很明显地看到绿绿的,左边有个+号,表示是我们新增的行数。要理解现在的所有文件对比都是跟上次提交之后做对比,如果把新增的这行删掉,就会提示没有什么更新。

撤销修改
  • 在文件add到暂存区之前:git checkout可以撤销修改。

例如git checkout app/src/main/java/com/sky/activityskiptest/MainActivity.java撤销MainActivity.java。

  • 文件add到暂存区之后:先git reset移出暂存区,再使用git checkout来撤销修改。

例如:git reset HEAD app/src/main/java/com/sky/activityskiptest/MainActivity.javaHEAD表示git自建分支master的一个指针。然后再使用上方的撤销。

查看Git记录
  • 查看log:git log
git log.png

黄色的一串代表Log的ID,其余都是记录的一些信息,最下方是commit提交时输入的记录。

  • 查询某条记录:git log 5986f43107a08211094924a950439ff50d8a91c7 -1-1表示只看一条log。
  • 查询某条记录具体修改内容:git log 5986f43107a08211094924a950439ff50d8a91c7 -1 -p
分支:

简单的说,发布1.0版本的时候新建分支,发布之后不管他然后切换到主分支做1.1版本。
1.0出现bug需要修改就切到1.0去修改,修好后发布并及时合并到主分支。
1.1做好以后需要发布,1.0的bug也修复了代码也是最新的,直接发布就好。

分支相关命令:
  • 查看所有分支:git branch
  • 创建分支:git branch XXX(e.g.:Version1.0)
  • 切换分支:git checkout XXX
  • 合并分支:首先切换到master分支git checkout master然后git merge XXX就可以把XXX分支上的内容合并到master分支上。
  • 删除分支:git branch -D XXX
Tips:
  1. 查看分支时前面有个 * 并且字体是绿色的代表当前分支;
  2. 无法删除你当前所使用的分支。

二、远程版本库操作(Github等)

  • 克隆远程版本项目:git clone ...
    如果我想从github克隆一个项目到本地,先cd到想保存到的目录,比如cd D:/Doc/ASWorkspace然后再git clone https://github.com/SkyZhang007/coolweathertest.git后面的url是github上面复制来的Path。
    git clone.png
  • 更新本地代码同步到远程版本:git push origin master
    origin 表示推送到远程版本,master是远程版本的分支。
  • 远程版本的修改同步到本地:git fetch origin master
    这个命令表示同步远程代码并单独保存到本地的origin/master分支上,git diff origin/master可以查看远程版本修改的内容。最后使用git merge origin/master将刚刚同步来的代码合并到本地的当前分支中。
  • 同步到本地后直接合并:git pull origin master
    这个命令直接做了两个上方fetch和merge的事情。

三、本地项目上传到GitHub

3.1 GitHub注册并创建项目

Sign up for GitHub来注册并创建账户,接下来可以选择个人(免费)、私有(收费)计划。再接下来会让你填个问卷,跳过就行。
接下来就可以创建一个新的repository(代码仓库)了,看图:

New Repository.png

**填入项目Name,以及Description(介绍),勾选 Initialize this repository with a README(创建一个README项目介绍文件),选择一个license(许可证),这里选Apache License2.0就行。点击Create就可以看到自动生成的LICENSEREADME.md文件还有仓库的git地址了。

3.2 本地项目上传
  1. cd到本地项目目录,本地的项目init、add、并且commit之后,就可以准备上传了。
  2. Copy一下刚才GitHub创建的仓库的地址,命令git remote add origin https://github.com/SkyZhang007/ActivitySkipTest.git将本地的项目与git仓库作关联。
  3. 重要:命令git pull --rebase origin master貌似是与远程仓库作合并和协调。
  4. 执行git push -u origin master将本地代码push到GitHub。然而我用git push origin master也可以,不知道有啥大区别没。这个过程会让你输入GitHub的账号和密码,忽然蹦出来的图像化对话框感觉好感动...输入账号密码即可。然后等一会儿吧,这个过程可能比较慢。

push origin master.png

出现类似上述页面并可以继续输入命令行表示成功了,以后再更新的话只需要add. commitgit push origin master就可以了。

参考资料:

《第一行代码(第二版)》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容