Github使用的简单介绍 | imlab
Github使用的简单介绍
January 6, 2013, 10:20 am, :

Github使用简介
———————-

当我们的项目需要多人协作的时候,有一个公共的代码文档仓库就会很方便。由于网上最广泛使用的服务还是github.com,尽管自己最熟悉的是SVN,但还是为了能用上更好的服务而选择了github。

Github上的帮助页面有个Bootcamp的指引,实际上Windows和Mac系统都基本上可以通过github所提供的客户端进行便捷的管理,只需要点击Download Github for Mac/Windows下载安装就可以了。(注:后来发现github的客户端只支持最新版的OSX,若10.7以前的可以选用其他/更专业的git客户端,比如说SourceTree

而Linux系统将会稍麻烦一点,需要按照指引一步一步做。Github上手步骤分成四步:

1. Set Up Git
2. Create a Repo
3. Fork A Repo
4. Be Social

第一步会告诉你如何通过git的命令行设置你的名字、帐号和SSH密钥,生成密钥之后还需要上传到自己的帐号设置里面,之后才可以进行其他操作。第二步是要如何创建一个repository,一般会包含一个最基本的README文件,因为空目录不会上传到repository上。第三步就是如果你希望对其他repository进行分支的更改,这适用在没有修改该repository的权限,或者不希望将自己的代码跟别人的repository混在一起的时候,就可以通过分支到自己的帐号上,用自己的repository进行修改,同时通过upstream来同步原始repository和自己的repository的代码。第四步介绍了如何在github上与其他用户的交流。在Linux下也有其他图形客户端,比如说RabbitVCS就挺好的,能够同时支持SVN, Git和Mercurial,使用的是windows下的Toitoise系列的风格。

但在linux下有一个地方要注意的,如果是github的private repository(私有仓库),只用git clone命令是无法拷贝到本地的(用其他客户端也不行),而需要用以下的命令行:

$ git clone git@github.com:username/projectname.git
经过前面几步之后,就已经可以用git来存放自己的代码了。后面还需要学习一下Git的版本控制理念,如怎样提交代码,怎样做分支的管理和版本控制,这要结合到团队成员之间如何配合管理提交代码。

 

Git概念简述
———————

Github是一个提供了Git代码版本管理服务的服务器,使用版本控制和代码托管有什么好处呢?

  • 我们可以通过github的网站随时随地浏览,我们的代码和文档资料(如:arduino-exercises)。
  • 我们可以跟踪所有提交到服务器的更改(也就是如果你做了坏事都会有记录 😛 ,如:arduino-exercises的history
  • 我们可以对现有的工作资料进行备份。如果碰巧你的硬盘坏了或者电脑丢了,起码网站上有一份备份。
  • 我们可以持续地对自己的工作做更改。Git支持我们对现有的内容创建分支,保存快照,合并修改等,让我们可以不断地改进作品而不影响原有的版本。

以下是Git对文件管理流程的简介:

1. Checkout。第一次使用需要从远程服务器fetch并checkout HEAD来创建本地的工作目录,之后我们便可以在工作目录里任意地添加/删除/修改文件,然后提交到本地的仓库。
2. Add to Index。对于新添加的文件,我们要把它加到索引(Add to Index)里面,文件的修改才会进入Git的跟踪范围。
3. Commit。对于已添加索引的文件, 我们只需要在要保存更改的时候,做一个“提交到本地仓库”(Commit)的操作。那么该文件的更改便在本地有历史可寻。
4. Push/Pull。同步本地仓库(Local Repository)和远程仓库(Remote Repository)的记录。这里用的动词很形象,Push就是把本地仓库的记录推送到服务器上,而Pull就是把服务器的记录拉到本地的仓库。

这里稍微解释一下,由于Git是一个DVCS(Distributed Version Control System,分布式版本控制系统),不同于传统的CVS/SVN版本系统那样必须由一个中央服务器来管理所有的版本记录,它实际上每一个仓库都可独立运作,因此而称为分布式(Distributed)。Git Repos既可以是一个服务器的仓库,也可以是一个本地的文件仓库,可以存在与不同的文件夹里或别人的电脑上,它可以被无限制地fork/clone产生分支,并记下来它们的上游(upstream)是源自哪一个分支,这样当拥有相同upstream的仓库之间,就可以共享版本信息以进行版本合并操作。

5. Merge(只在有冲突的时候)。有时候在我们想Push更新到服务器的时候,发现服务器上的版本已经有别人更新过了,即有新的其他人的Push记录没有下载到本地,这时需要我们先把别人的更改下载到本地,以确保自己是基于最新版提交的更改,才可以把本地的记录Push上去。如果别人修改的部分跟自己的部分没有重合,则应该可以自动地merge。

一种简单的merge方法如Github Client是先对自己的版本拷一个备份到别的目录,然后Discard Local Changes(即取消本地的更改,或称Revert),然后把Remote的changes更新到本地,然后再在最新版的基础上把自己的changes写上去。

另一种办法是在SourceTree里提供更高级的处理矛盾的方式,就是你直接修改本地的文件为想要的最新状态,然后把其标为已经Resolved(右键点击文件->Resolve Conflicts->Mark as Resolved),再提交的时候就会认为这个conflict已经被merged了,可以成功commit。

如果在使用过程之中遇到问题,可先查看所用的Git客户端的文档。之后如果有需要的话,我再讲解一下如何做tag/branch相关的操作,这就属于进阶的内容了。

 

Leave a Reply

Your email address will not be published. Required fields are marked *


May 30, 2017, 7:10 am, imlab.cc
Log in