零基础GitHub入门教程

来源:互联网 发布:python 改变工作路径 编辑:程序博客网 时间:2024/05/01 21:12

最近Github很火,暑期的时候也注册了一个账号,可是其实一直没用。主要呢,是不知道那到底干什么用。现在要照着自己的学习记录一个像我这种完全零基础的人的入门教程。

首先,让我们先知道GitHub到底是啥?

GitHub 是一个用于使用Git版本控制系统项目的共享虚拟主机服务。它由GitHub公司(曾称Logical Awesome)的开发者Chris Wanstrath、PJ Hyett和Tom Preston-Werner使用Ruby on Rails编写而成。

我想很多零基础的同学看了上面那个wiki说明,基本可以说是没看明白。下面是其主页:


关于版本控制

那么下一步,我们要做的就是了解——什么是版本控制

所谓版本控制是一种软件工程技巧,借此能在软件开发的过程中,确保由不同人所编辑的同一程式档案都得到同步。

软件设计师常会利用版本控制来追踪、维护源码、文件以及设定档等等的改动,并且提供控制这些改动控制权的程序。
在最简单的情况下,软件设计师可以自己保留一个程式的许多不同版本,并且为它们做适当的编号。这种简单的方法已被用在很多大型的软件项目中。该方法虽然可行,但不够有效率。除了必须同时维护很多几乎一样的源码备份外;而且极度依赖软件设计师的自我修养与开发纪律,但这却常是导致错误发生的原因。有时候,一个程式同时存有两个以上的版本也有其必要性,例如:在一个为了部署的版本中程式错误已经被修正、但没有加入新功能;在另一个开发版本则有新的功能正在开发、也有新的错误待解决,这使得同时间需要不同的版本并修改。此外,为了找出只存在于某一特定版本中(为了修正了某些问题、或新加功能所导致)的程式错误、或找出程式错误出现的版本,软件除错者也必须借由比对不同版本的程式码以找出问题的位置。
Git版本控制方法
2000年后,TeamWare、BitKeeper、和GNU开始用分散式系统:开发者直接在各自的本地档案库工作,并容许多个开发者同时更动同一档案,而各个档案库有另一个合并各个改变的功能。这个方式让开发者能不靠网络也能继续工作,也让开发者有充分的版本控制能力,而不需经中央权威许可。分散式系统仍然可以有档案上锁功能。分散式系统Linux内核的发明人林纳斯·托瓦兹就是分散式版本控制系统的支持者,他开发了目前被开源社群广泛使用的分散式版本控制系统Git。
档案上锁
档案上锁功能能对高难度的合并(例如大幅更改大档案或档案群的许多部份)提供一些保护,但其他开发者仍然可以绕过版本控制系统改变档案(这本身就是很大的问题)。所以档案上锁功能带来的功效与副作用一直饱受争议。
术语

基线(Baseline):基线是软件文档或源码(或其它产出物)的一个稳定版本,它是进一步开发的基础。

档案库(Repository):存储档案的新版本还有历史资料的地方,通常是在服务器上。有时候也叫Depot(像是在SVK、AccuRev还有Perforce中)

工作版本(Working copy):从档案库中取出一个本地端(客户端)的复制,针对一个特定的时间或是版本。所有在档案库中的档案更动,都是从一个工作版本中修改而来的,这也是这名称的由来。观念上,这是一个沙盒。

提交(Commit):将本地端的修改送回档案库。(由版本控制软件处理“跟上次更动相比,哪个档案又被更动”的事)

变更(Change):对一份文件作的特定更动。

取出(Check-Out):从档案库取出档案到本地端(客户端)。

更新(Update):将档案库的修改送到本地端(与提交相反)

合并(Merge / Integration):合并各个改变。

版次(Revision):一个revision或version指的是一系列版本变迁的其中之一。

冲突(Conflict):当两方更动同一份文件会发生冲突。

关于Git

再大概知道了版本控制是什么后,下面来了解一下Git是什么:

Git是一个分布式版本控制/软件配置管理软件,原来是linux内核开发者林纳斯·托瓦兹为了更好地管理linux内核开发而创立的。需要注意的是和GNU Interactive Tools,一个类似Norton Commander界面的文件管理器有所不同。Git最初的开发动力来自于BitKeeper和Monotone。Git最初只是作为一个可以被其他前端比如Cogito或StGIT[6]包装的后端而开发的。不过,后来Git内核已经成熟到可以独立地用作版本控制。很多有名的软件都使用Git来进行版本控制,其中有Linux内核、X.Org服务器和OLPC内核开发。

主要功能
Git是用于Linux内核开发的版本控制工具。与CVS、Subversion一类的集中式版本控制工具不同,它采用了分布式版本库的作法,不需要服务器端软件,就可以运作版本控制,使得源代码的发布和交流极其方便。Git的速度很快,这对于诸如Linux kernel这样的大项目来说自然很重要。Git最为出色的是它的合并追踪(merge tracing)能力
实际上内核开发团队决定开始开发和使用Git来作为内核开发的版本控制系统的时候,世界开源社群的反对声音不少,最大的理由是Git太艰涩难懂,从Git的内部工作机制来说,的确是这样。但是随着开发的深入,Git的正常使用都由一些友善的命令稿来执行,使Git变得非常好用。现在,越来越多的著名项目采用Git来管理项目开发,例如:wine、U-boot等。
作为开源自由原教旨主义项目,Git没有对版本库的浏览和修改做任何的权限限制,通过其他工具也可以达到有限的权限控制,比如:gitosis, CodeBeamer MR。原本Git的使用范围只适用于Linux / Unix平台,但在Windows平台下的使用也逐渐成熟,这主要归功于Cygwin、msysgit环境与TortoiseGit这样易用的GUI工具。其实Git的源代码中已经加入了对Cygwin与MinGW编译环境的支援,且逐渐完善,为Windows使用者带来福音。
早期历史
早期Linux的开发人员是使用BitKeeper来管理版本控制和维护程式码。2005年的时候,开发BitKeeper的公司同Linux内核开源社区结束合作关系,并收回使用BitKeeper的权利。Torvalds开始着手开发Git来替代BitKeeper。
实现原理
Git和其他版本控制系统(如CVS)有不少的差别,Git本身关心档案的整体性是否有改变,但多数的CVS,或Subversion系统则在乎档案内容的差异。因此Git更像一个档案系统,直接在本机上取得资料,不必连线到host端取资料回来。
库结构
 hooks:存储钩子的文件夹
 logs:存储日志的文件夹
 refs:存储指向各个分支的指针(SHA-1标识)文件
 objects:存放git对象
 config:存放各种设置文档
 HEAD:指向当前所在分支的指针文件路径,一般指向refs下的某文件
移植性
在Windows平台上有msysgit与TortoiseGit可资利用。TortoiseGit还提供有GUI。

现在git也提供windows版本下载。http://git-scm.com/download

如果你想了解更多的内容,下面可以猛击下图:



当你看完了上面的资料后,应该对Git有了初步的了解,那么接下来就开始下载

Git(Windows)下载

安装界面如下所示:


安装完成后,开始对Git进行设置:

1、点击Git Bash


2、在git中输入username 和email

$ git config --global user.name "Your name"$ git config --global user.email "your_email@example.com"


好了,现在git的部分已经完成了第一步。

git还有一个很棒的入门教程


关于GitHub

在了解了git之后,咱们开始进入github领域。

首先,你需要注册一个github账号;

然后,咱们开始创建一个仓库(Create A Repo)

原本我还想写,但是,关于github最好的教程是官方入门教程。



git的一些常用命令

1.创建项目  mkdir djangoproject  

2.进入项目目录  cd djangoproject  

3.初始化项目  git init  

4.添加readme文件  touch README  

5.把文件加入git管理  git add README  

6.第一次提交  git commit -m ''first commit'  

7.设置项目提交路径  git remote add origin git@github.com:username/user.git  

8.提交到github  git push -u origin master  


生成自己的SSH keys  

1.进入.ssh目录  cd ~/ssh  

2.生成ssh key  $ssh-keygen -t rsa -C "your_email@youremail.com"  Generating public/private rsa key pair.  Enter file in which to save the key (/home/neil/.ssh/id_rsa): 回车  Enter passphrase (empty for no passphrase): 输入密码  Enter same passphrase again: 再次输入密码  3.把自己的key加入项目  进入到要提交项目目录,并运行:  ssh-add ~/.ssh/id_rsa



0 0