从0开始学习GitHub系列

原文链接:http://blog.csdn.net/column/details/13170.html,原创发布于微信公众号 AndroidDeveloper「googdev」

  1. 从0开始学习 GitHub 系列之「01.初识 GitHub」
  2. 从0开始学习 GitHub 系列之「02.加入 GitHub」
  3. 从0开始学习 GitHub 系列之「03.Git 速成」
  4. 从0开始学习 GitHub 系列之「04.向GitHub 提交代码」
  5. 从0开始学习 GitHub 系列之「05.Git 进阶」
  6. 从0开始学习 GitHub 系列之「06.团队合作利器 Branch」
  7. 从0开始学习 GitHub 系列之「07.GitHub 常见的几种操作」
  8. 从0开始学习 GitHub 系列之「08.如何发现优秀的开源项目」
  9. 使用GIT FLOW管理开发流程
  10. gitflow
  11. 从 0 开始学习 GitHub 电子书免费送
  12. GitHub秘籍
  13. Github使用指南
  14. 常用 Git 命令清单

送你一份学习Git的最佳资料,关于Git看这几份资料足够了,请叫我良心张,赞赏、点击广告都是我坚持更新的最大动力!

  1. ProGit中文版:https://git-scm.com/book/zh/v2

  2. 廖雪峰的Git教程: http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

  3. Git简易指南:http://rogerdudler.github.io/git-guide/index.zh.html

GitHub 系列电子书免费获取地址:http://pan.baidu.com/s/1gfn3U2v ,希望能对你有帮助。除了赞赏之外,你还可以随手点赞、点击下广告,也是对我的支持与认可,希望 17 年继续加油,一起努力!

一、Git与Github简介

1、Git简介

Git是用于Linux内核开发的版本控制工具。与CVS、Subversion一类的集中式版本控制工具不同,它采用了分布式版本库的作法,不需要服务器端软件,就可以运作版本控制,使得源代码的发布和交流极其方便。Git的速度很快,这对于诸如Linux内核这样的大项目来说自然很重要。

  • Git是一款免费、开源的分布式版本控制系统
  • Git可以有效、高速的处理从很小到非常大的项目版本管理。
  • Git最初由 Linux 之父 Linus Trovalds(林纳斯·托瓦兹) 开发,用作Linux内核代码的管理。
  • 官网:https://git-scm.com

Git的优势

  • 分布式,强调个体
  • 公共服务器压力和数据量都不会太大
  • 速度快、灵活
  • 任意两个开发者之间可以很容易的解决冲突
  • 离线工作

2、Github简介

  • Github是全球最大的社交编程及代码托管网站(https://github.com/)。
  • Github可以托管各种git库,并提供一个web界面。
  • Github作为开源代码库以及版本控制系统,Github拥有百万开发者用户。随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及发现已有代码的首选方法。如,国内知名互联网公司的开源项目:
    • 阿里 https://github.com/alibaba
    • 腾讯 https://github.com/AlloyTeam
    • 百度 https://github.com/baidufe

3、Github影响力

全球顶级科技公司纷纷加入 GitHub ,并贡献他们自己的项目代码

  • Google:https://github.com/google
  • 苹果:https://github.com/apple
  • Facebook:https://github.com/facebook
  • Twitter:https://github.com/twitter
  • 微软:https://github.com/microsoft
  • Square:https://github.com/square
  • 阿里:https://github.com/alibaba

全球顶级开源项目都优先选择在 GitHub 上开源

  • Linux:https://github.com/torvalds/linux
  • Rails:https://github.com/rails/rails
  • Nodejs:https://github.com/nodejs/node
  • Swift:https://github.com/apple/swift
  • CoffeeScript:https://github.com/jashkenas/coffeescript
  • Ruby:https://github.com/ruby/ruby
  • laravel:https://github.com/laravel/laravel

全球顶级编程大牛加入GitHub

Linux 发明者 Linus Torvalds:https://github.com/torvalds

二、使用Github

1、基本概念

仓库(Repository)

仓库的意思,即你的项目,你想在 GitHub 上开源一个项目,那就必须要新建一个 Repository ,如果你开源的项目多了,你就拥有了多个 Repositories 。

收藏(Star)

仓库主页star按钮,意思为收藏项目的人数,在 GitHub 上如果你有一个项目获得100个star都算很不容易了!

复制克隆项目(Fork)

这个不好翻译,如果实在要翻译我把他翻译成分叉,什么意思呢?你开源了一个项目,别人想在你这个项目的基础上做些改进,然后应用到自己的项目中,这个时候他就可以 Fork 你的项目(打开项目主页点击右上角的fork按钮即可),然后他的 GitHub 主页上就多了一个项目,只不过这个项目是基于你的项目基础(本质上是在原有项目的基础上新建了一个分支),他就可以随心所欲的去改进,但是丝毫不会影响原有项目的代码与结构。

发起请求(Pull Request)

发起请求,这个其实是基于 Fork 的,还是上面那个例子,如果别人在你基础上做了改进,后来觉得改进的很不错,应该要把这些改进让更多的人收益,于是就想把自己的改进合并到原有项目里,这个时候他就可以发起一个 Pull Request(简称PR) ,原有项目创建人,也就是你,就可以收到这个请求,这个时候你会仔细review他的代码,并且测试觉得OK了,就会接受他的PR,这个时候他做的改进原有项目就会拥有了。

关注(Watch)

这个也好理解就是观察,如果你 Watch 了某个项目,那么以后只要这个项目有任何更新,你都会第一时间收到关于这个项目的通知提醒。

事务卡片(Issue)

发现代码BUG,但是目前没有成型代码,需要讨论时用;
问题的意思,举个例子,就是你开源了一个项目,别人发现你的项目中有bug,或者哪些地方做的不够好,他就可以给你提个 Issue ,即问题,提的问题多了,也就是 Issues ,然后你看到了这些问题就可以去逐个修复,修复ok了就可以一个个的 Close 掉。

Github主页

账号创建成功或点击网址导航栏github图标都可进入github主页:该页左侧主要显示用户动态以及关注用户或关注仓库的动态;右侧显示所有的git库

仓库主页

仓库主页主要显示项目的信息,如:项目代码,版本,收藏/关注/fork情况等

个人主页

个人信息:头像,个人简介,关注我的人,我关注的人,我关注的git库,我的开源项目,我贡献的开源项目等信息

2、注册github账号

打开官网 github.com 注册

3、创建仓库

脚下留心:1、新注册的用户必须验证邮箱 2、一般情况一个git库对应一个项目

4、个人中心

注册成功或者每次登录都会进入个人中心显示对应的控制面板

添加合作者

三、Git安装和使用

四、Git基本工作流程

AllenIverson@AllenIverson MINGW64 ~/Desktop
$ mkdir gittestAllenIverson@AllenIverson MINGW64 ~/Desktop
$ cd gittestAllenIverson@AllenIverson MINGW64 ~/Desktop/gittest
$ git init
Initialized empty Git repository in C:/Users/AllenIverson/Desktop/gittest/.git/AllenIverson@AllenIverson MINGW64 ~/Desktop/gittest (master)

Git工作区域

实际开发目录

  • trunk,主分支 : 当前代码开发的目录
  • tags,里程碑: 发布的版本记录
  • branches,分支目录: bug的修复 ,新技术的研究(1,能否提供开发效率,2,能否提高软件的访问性能)

Master 主线/主分支

revert 恢复,checkout

Git Repository(Git 仓库)

最终确定的文件保存到仓库,成为一个新的版本,并且对他人可见

暂存区

暂存已经修改的文件,最后统一提交到git仓库中

工作区(Working Directory)

添加、编辑、修改文件等动作

向仓库中添加文件流程

命令

git initgit config --global user.name 'name'git config --global user.email 'email'git config --listtouch test.javagit statusgit add test.javagit commit -m '提交描述'git pushlsrmviclear

vim使用

vim三种模式:命令模式、插入模式、编辑模式。使用ESC或i或:来切换模式。

命令模式下:

:q    退出
:q!   强制退出
:wq 保存并退出

Create/Apply Patch

五、Git管理远程仓库

git clone 仓库地址git push

六、Github Pages 搭建网站

七、AndroidStudio

代码托管

  • GitHub
  • 开源中国
  • CSDN

协同开发中Git的使用规范

先更新,再提交

Git更新的原则是要随时更新,随时提交。当完成了一个小功能,能够通过编译并且自己测试之后,谨慎地提交。

如果在修改的期间别人也更改了Git的对应文件,那么commit就可能会失败。如果别人和自 己更改的是同一个文件,那么update时会自动进行合并,如果修改的是同一行,那么合并时会产生冲突,这种情况就需要同之前的开发人员联系,两个人一起协商解决冲突,解决冲突之后,需要两人一起测试保证解决冲突之后,程序不会影响其他功能。

在更新时注意所更新文件的列表,如果提交过程中产生了更新,则也是需要重新编译并且完成自己的一些必要测试,再进行提交。这样既能了解别人修改了哪些文件,同时也能避免SVN合并错误导致代码有错。

多提交

每次提交的间歇尽可能地短,以几个小时的开发工作为宜。例如在更改UI界面的时候,可以每完成一个UI界面的修改或者设计,就提交一次。在开发功能模块的时候,可以每完成一个小细节功能的测试,就提交一次,在修改bug的时候,每修改掉一个bug并且确认修改了这个bug,也就提交一次。我们提倡多提交,也就能多为代码添加上保险。

不要提交不能通过编译的代码

代码在提交之前,首先要确认自己能够在本地编译。如果在代码中使用了第三方类库,要考虑到项目组成员中有些成员可能没有安装相应的第三方类库。项目经理在准备项目工作区域的时候,需要考虑到这样的情况,确保开发小组成员在签出代码之后能够在统一的环境中进行编译。

每次提交必须书写明晰的标注

在一个项目组中使用SVN,如果提交空的标注或者不确切的标注将会让项目组中其他的成员感到很无奈,项目经理无法很清晰的掌握工作进度,无法清晰的把握此次提交的概要信息。在发现错误后也无法准确的定位引起错误的文件。所以,在提交工作时,要填写明晰的标注,能够概要的描述所提交文件的信息,让项目组其他成员在看到标注后不用详细看代码就能了解你所做的修改。

提交时注意不要提交本地自动生成的文件

例如eclipse中的.classpath文件,Windows生成的缩略图Thumbs.db,项目编译生成的临时文件.obj, .class等等。如果项目中没有进行这方面的配置来强行禁止提交这样的文件,请自觉不要提交这样的文件。提交了这样的文件后,别人在更新后就可能与本地的环境冲突从而影响大家的工作。

不要提交自己不明白的代码

代码在提交入SVN之后,你的代码将被项目成员所分享。如果提交了你不明白的代码,你看不懂,别人也看不懂,如果在以后出现了问题将会成为项目质量的隐患。因此在引入任何第三方代码之前,确保你对这个代码有一个很清晰的了解。

慎用锁定功能 在项目中要慎用锁定的功能,在你锁定了一个文件之后别人就无法继续修改提交该文件,虽然可以减少冲突的发生率,但是可能会影响项目组中其他人员的工作。平时只有在编辑那些无法合并的文件(例如图片文件,flash文件等)时,才适当的采用锁定操作。

Git使用中遇到的问题

fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly
error: RPC failed; curl 56 SSL read: error:00000000:lib(0):func(0):reason(0), errno 10054

原因

可能是上传文件过大

解决方法

git config http.postBuffer 524288000
git config --global http.postBuffer 524288000

Android开发工具:Git,Github,GitBook相关推荐

  1. Android开发工具类集合

    各种帮助类汇总:https://github.com/Blankj/AndroidUtilCode 常用的 ios 风格 dialog 和 meterial design 风格的 dialog:htt ...

  2. 全网最全Android开发工具,Android开发框架大全

    涵盖Android方方面面的技术, 目前保持更新. 时刻与Android开发流行前沿同步. 目录 一.工具 Android开发工具 在线工具宝典大全 二.框架 *缓存框架* DiskLruCache ...

  3. Android Studio重构之路,我们重新来了解一下Google官方的Android开发工具

    Android Studio重构之路,我们重新来了解一下Google官方的Android开发工具 记得我的第一篇博客就是写Android Studio,但是现在看来还是有些粗糙了,所有重构了一下思路, ...

  4. java安卓开发工具_推荐几个非常实用的Android开发工具

    工欲善其事,必先利其器.我们进行Android开发也要有好的开发工具辅助才能更好更高效的完成各种开发,为用户提供更实用的应用程序.本文就为大家推荐几个非常实用的Android开发工具,及几个常用的编辑 ...

  5. android串口工具apk_【APK】一个强大的Android开发工具!

    排版|设计|配图©孤狼小航 Android开发助手是个强大的Android开发工具,能够用来反编译其他应用.查看其他应用布局和控件信息.屏幕取色(颜色取样器).查看Activity历史记录.查看应用M ...

  6. Android开发工具Android Studio、Android SDK和Genymotion完全配置

    所谓"工欲善其事,必先利其器".Android Studio 是谷歌推出一个Android集成开发工具,基于IntelliJ IDEA. 类似 Eclipse ADT,Androi ...

  7. 安装Android开发工具

    安装Android开发工具 开发Android应用程序的门坎并不高,因为Google已经为Android应用程序开发提供了免费而且跨平台的集成开发环境.只要手上有台计算机,能连接上网络,我们就能随时下 ...

  8. 使用Android开发工具23版更新Eclipse

    本文翻译自:Update Eclipse with Android development tools v. 23 I updated Eclipse with the new SDK tools ( ...

  9. Android开发工具集合

    Android Studio Android开发环境,基于IntelliJ IDEA,谷歌2013年I/O大会发布,类似 Eclipse ADT:现已更新到1.3版本(截止15年8月),并支持NDK开 ...

  10. android新手用什么工具包,分享七个很是有用的Android开发工具和工具包

    过去的2010年是Android全面爆发的一年,出众的扩展性使其成为了众多玩家的购机首选,市场占有率节节攀高.本文与你们分享七个很是有用的Android开发工具和工具包,但愿对从事Android开发的 ...

最新文章

  1. 企业运营对 DevOps 的「傲慢与偏见」
  2. 前端那点事儿——Tocify自动生成文档目录
  3. boost::signals2::deconstruct 作为构建后的工厂函数的测试程序
  4. vue watch 第一次不执行_Vue 实现前进刷新,后退不刷新的效果
  5. mybatis学习(33):动态sql if
  6. apache ab压力测试报错
  7. oracle varchar默认长度_面试官:如何精确计算mysql数据库索引长度?
  8. 【2017年第4期】数据管理能力成熟度模型
  9. 云服务器主体信息可以变更吗,云服务器备案号是什么?备案号存在能否更换云服务器?...
  10. TWaver With JavaFX
  11. 业界 | 从未卜先知的信号灯说起,阿里城市大脑的智慧交通实践
  12. android应用开发实验报告_聚焦 Android 11: Android 11 应用兼容性
  13. era5数据内容说明_接口测试:A04_HttpRunner通用_02_提取数据_01_extract关键字
  14. oracle的clob赋值_oracle 临时clob 和永久clob 的读取操作详解
  15. 人体静止存在雷达探测,雷达感应模组技术,物联网智能化发展
  16. Android 圆形进度条
  17. Pix2Pix代码解析
  18. HLW8032做220V电量采集方案测试
  19. 用c语言判断一个数是否为素数
  20. 【3D游戏基础】蒙皮骨骼动画与骨架

热门文章

  1. 从落后的传统WAN转向SD-WAN—Vecloud
  2. Oracle中启动和关闭的各种方式
  3. PHP学习之没有权限修改hosts文件
  4. 启动tomcat提示Could not create the Java virtual machine.
  5. 构造函数的理解(构造函数与 init 方法)
  6. 便利的操作plist文件
  7. 关于开发简易搜索引擎的一些总结和思考
  8. 周五:IPC连接及远程执行
  9. DataGrid中页导航栏的自定义样式
  10. java学习与总结:索引