(一)托管项目到GitHub

来源:互联网 发布:apache 代理转发 编辑:程序博客网 时间:2024/06/05 01:54

托管项目到GitHub

GitHub,是一个面向开源及私有软件项目的托管平台。随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及发现已有代码的首选方法。

作为一名程序员,尤其是移动开发者,都或多或少得去GitHub上下载过第三方库来简化自己的工作。

下载一定是人人都会的,但是,要把我们自己的项目托管到GitHub上的流程到底是怎样的?阅读完本文,你能很快在GitHub上建立起自己的代码库。

在第一次接触GitHub的时候,我在想,我是在GitHub直接创建一个仓库,之后在本地通过地址下载,还是在Android Studio中创建一个项目,再关联到GitHub?

GitHub Desktop

GitHub Desktop,是一个图形化的应用软件,通过它我们可以很方便的创建仓库,同步本地代码到GitHub上,从使用角度来说,它是目前最简单的方式。因为,使用者不需要额外去学习任何命令行指令和Git相关的技术,支持mac和windows。

本地项目关联到GitHub

打开GitHub Desktop之后,如果你想把本地的某个项目文件夹关联到GitHub上,最简单的办法就是拖拽项目文件夹到GitHub Desktop中。

如果你的项目文件夹,已经被Git管理起来了,那么GitHub Desktop会立即同步代码到GitHub上,这点请放心。

如果你的项目文件夹,不是一个Git版本控制仓库,那么GitHub Desktop会弹出窗口,询问你是否要把它加入版本控制,请注意转换为Git仓库并不会修改或删除原项目中任何文件,仅会生成一个Git管理的隐藏目录。

提交代码到本地仓库

所有的Git仓库都是由很多次在某个时刻提交的代码的快照组成而已,什么意思呢?其实,就是指你代码如果被修改了而没有上传到GitHub上,则库上的代码是没有更新的,这很好理解,因为你改动的仅仅是保存在本地的一份代码拷贝而已,因此,我们在同步我们代码到GitHub上之前,是需要进行Commit提交的。

同步本地仓库到GitHub

和SVN不同的是, Git的操作要多一步PUSH。因为,Git有本地库和远程库2个库,我们本地修改的代码,通过commit仅仅是提交到了本地仓库中,而远程库的更新则是需要push操作,把本地库中更新同步到远程库。

Command Line

图形化的GitHub Desktop,虽然操作简单,但是对于追求效率高的程序员来说,还是太慢,使用Command Line虽然需要学习很多命令行指令,但对理解Git版本控制实现原理还是很有帮助的,使用命令行自由度更大,而且对于培养极客精神也是大有裨益的。

我自己就是使用Command Line来进行项目的版本控制,用的多了自然对Git指令基本没啥压力。因此本文,重点在于如何使用命令行进行日常代码的版本控制。

明确需求

前面说过,在日常编程中,主要有3种情况:

  • 第一种:一个新项目刚起,准备托管到GitHub上,一般先由主程在GitHub上创建一个远程库,git地址发给所有开发人员,开发人员在本地创建一个空白的文件夹,然后克隆刚刚创建的项目,开始开发工作。

  • 第二种:以Android开发为例,已有本地代码,想把代码开源出去,这时通过Android Studio中版本控制工具中自带的GitHub,把本地库推送到GitHub(前提是,GitHub上没有重名的仓库,因为Android Studio会默认创建和工程名称相同的GitHub仓库)。

  • 第三种:直接在Android Studio创建一个新项目,之后分享到GitHub上。

现在,到底选择哪种情况?

第1种情况,一方面可能会出现多个开发人员生产相同文件或代码等,另一方面,如果上一个移动应用项目,很可能需要一些自动生成的文件,如使用Android Studio创建新工程,会自动产生很多项目文件,因此不推荐使用;第2,3种情况,其实本质上都是:本地git仓库与远程git仓库关联同步

Tips:下面以我想把当前一个本地的工程托管到GitHub上为例,向你说明其实掌握了Git版本控制的基本原理后,开源自己的项目到GitHub上是很容易的。因为,GitHub告诉我们,可以从仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。

HTTP TOOLS

HttpTools,是我的第一个想上传到GitHub上的项目,其实它就是一个测试Http接口的工具App,类似于RESTClient这样的工具,它本身十分简单,我并不是为了方便测试服务器给的接口,因为它不如直接使用RESTClient方便调试接口,之所以想搞出这个东西,最大的想法是为了测试Http网络请求框架是否稳定易拓展,比较这个项目测接口是要写Http请求代码的,而不是一个纯粹的测试工具。

1.创建GitHub仓库

我决定先在GitHub上创建一个仓库,打算后面通过命令行把本地开发好的代码上传到该仓库下进行管理。

2.创建本地项目的Git库

这里,本地项目工程名为:HttpTest,本仅仅是用了测试Http接口的,后面考虑到本项目可以用了测试网络请求框架,因此准备关联到HttpTools的远程GitHub仓库。

(1)初始化HttpTest项目为git仓库

找到工程路径:

使用命令git init

(2)添加项目文件到本地Git仓库

注意,有些文件是需要进行忽略的,所以执行添加之前,先要忽略特殊文件,在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件。

将项目文件添加到本地Git仓库,操作如下:

(3)github上的项目pull下来

(4)本地Git库关联远程库HttpTools

远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。

(5)本地库的所有内容推送到远程库上

PS:这里push会出错的原因是因为,我在远程库中添加了README.MD,所以无法成功,需要先执行命令,把远程仓库中的README.MD等文件通过如下命令合并[注:pull=fetch+merge]到本地Git仓库:

查看是否本地Git仓库中已有远程库的相关文件:

由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来, 在以后的推送或者拉取时就可以简化命令。

PS:因为直接在GitHub上创建项目,如果选择了自己生成README.MD或开源许可证等文件,还会自动生成.gitignore,在PUSH本地代码到远程库时一定会报错,请按这篇博客解决即可:如何解决failed to push some refs to git。


【参考】:
1.Getting your project on GitHub
2.如何用命令行在github新建一个项目
3.廖雪峰的官方网站-Git教程

原创粉丝点击