版本控制简介,git使用----使用GitHub托管代码

  关于版本控制:

  很久以前,人们苦于对写过的代码进行版本的管理,经常过了一段时间想恢复原来写过的代码却又忘了不知道丢到哪儿去了,有的人用加上时间后缀来命名文件的方法,便于后期维护,但是这样做的麻烦也很大,时间一长,自己也会忘了什么时候保存文件是干嘛用的,而且万一自己的电脑坏掉了造成文件丢失,那么先前的努力都要从头再来。于是人们就想能否有好的版本控制系统来控制版本并能方便的回溯。

  ----下面是从git-scm.com上摘抄过来的一段关于版本控制的说明(关于Git的一本向导书籍,在线网址是http://git-scm.com/book, ):

  

  

  大致的意思是所版本控制系统(VCS)是一种可以保存文件不同时间段的信息和可回溯的一种系统,在很久以前就有人对版本控制系统进行研究,那是的版本控制系统还是本地的。

  在现在,版本控制系统已经发展了很长一段时间,主要分为中央式版本控制系统,称为CVCS(Centralized Version Control System)和分布式版本控制系统,称为DVCS(Distributed Version Control System)。两种系统各有有缺点:

  中央式版本控制系统的优点显而易见,它有一套标准化的管理流程,且市面上很多支持的软件;但是它的缺点也是显而易见的,它的所有版本控制在一台服务主机上,万一有一天服务器挂掉了,那么恢复文件的希望就只能从服务器下载过文件的子机找了,可是不能保证子机会完整把项目的文件拷贝下来,文件丢失的风险非常大。    中央式的版本控制系统软件有很多,如CVS,Subversion,Perforce等,现在公司常用的是Subversion。

  相比之下,分布式的版本控制的优点是它从代码仓库获得一份完整拷贝而不是检出部分文件,每个人的本地主机都是一台代码仓库,任何一台机子挂掉都可以从其他机子获得最近时间的更新内容。并且分布式版本控制还有一个特点是大部分的操作是在本地,即使在没有网络的情况下都可以保存到本地仓库,等到有网络的时候进行一次推送即可,这样使得分布式版本控制系统得到了很大的自由。但是它也有它的缺点,为何现在公司用的都是中央式版本控制软件而不是分布式版本控制呢?这是因为作为分布式版本控制系统原本就是由开源社区开发的,当时为了代码共享,所以获取到的项目拷贝是完整的拷贝,而公司为了内部保密,需要对项目的不同文件进行权限保护,比如XX文件只能由项目部维护,XX文件开发部管理而其他部门不允许修改,甚至登录版本控制软件系统根本就看不到这个文件。   分布式的版本控制系统软件有Git,Mercurial,Bazaar以及Darcs。

  下面是中央式版本控制系统(上)和分布式版本控制系统(下)的对比图。

  

  

  不难看出,分布式版本控制系统具有更高的安全性。保证了文件的多份拷贝,不会因为某台机子的故障而丢失所有文件,即使主机瘫痪了,也能从下面的子仓库中获取最近的更新文件。

  ----关于Git

  本文是详细讲解关于Git的简介和安装使用,Git是由linux 的开发者--Linus Torvalds 带领开发的,关于Git的特性主要有:

  

  主要是说Git的快捷、设计简单、支持并行开发,完全分布、能够有效处理一些大项目等优秀的特性。关于Git的详细信息可以google,这里不再赘述。

  下面是关于Git的安装,现在开源社区流行的是将代码托管戴github上,这是个开源的代码托管平台,需要申请一个帐号以登录,登录后可以对代码进行维护,需要的可以到https://github.com 网站申请一个git账户。

  下面就以github为例,创建自己的git项目。

  流程比较简单:

  第一步可以点击sign up for GitHub

  

  跳转到如下界面,填写完整的用户信息,这里的邮箱必须是有效的,后期需要通过该邮箱进行验证,点击create an account

  

  接下来是选择你的计划,有免费的服务,如果需要私有的额外空间则可以另外购买。

  

  这里注册的内容比较简单,只要注册了帐号并邮箱激活后就可以使用了,现在登录到github,根据向导可以新建一个repository。点击new

  

  填写正确的repository名称,点击create repository

  

  创建成功后应该可以跳转到如下界面:

  

  如此便建好了自己的repository工作目录,可以看到下面有提示如何用命令行创建一个新的repository和推送资源到repository的说明。

  现在已经完成了github的帐号注册,下面需要的就是下载Git客户端,github客户端下载地址:https://github-windows.s3.amazonaws.com/GitHubSetup.exe ,windows用户建议下载这个链接,安装配置比较方便。

  如果是mac或者linux的用户可以参考这个页面:http://git-scm.com/book/en/Getting-Started-Installing-Git

  如果需要到官方网站下载git的客户端,可以点击链接:http://git-scm.com/download 下载对应操作系统的版本。

  如果是windows系统,下载安装完后桌面会有这两个快捷方式:

  

  ,第一个是Unix环境的shell界面,第二个是GitHub界面。建议使用Git 的shell界面,Unix的CUI非常强大,熟练了以后操作会非常快捷。

 

 

  首先、进入shell界面,设置用户名和邮箱:

  运行下面两条命令

  git config --global user.name "Enter your username here"

  git config --global user.emil "Enter your E-mail address"

 

 

  这两条命令的作用是设置你的代码参数gitconfig文件中的user.name和user.email参数,以后就可以用这个身份获取仓库代码和推送代码到仓库。

 Git comes with a tool called git config that lets you get and set configuration variables that control all aspects of how Git looks and operates. These variables can be stored in three different places:

  • /etc/gitconfig file: Contains values for every user on the system and all their repositories. If you pass the option--system to git config, it reads and writes from this file specifically.
  • ~/.gitconfig file: Specific to your user. You can make Git read and write to this file specifically by passing the --global option.
  • config file in the Git directory (that is, .git/config) of whatever repository you’re currently using: Specific to that single repository. Each level overrides values in the previous level, so values in.git/config trump those in /etc/gitconfig.

On Windows systems, Git looks for the .gitconfig file in the $HOME directory (%USERPROFILE% in Windows’ environment), which is C:\Documents and Settings\$USER or C:\Users\$USER for most people, depending on version ($USER is %USERNAME% in Windows’ environment). It also still looks for /etc/gitconfig, although it’s relative to the MSys root, which is wherever you decide to install Git on your Windows system when you run the installer.

 

 

  上面这段话是对gitconfig的详细解释,gitconfig中配置了许多的环境变量,这些变量在linux中可以在以下三个地方:

  1./etc/gitconfig文件中:    在使用git config命令时,如果使用--system参数则读写的是这个文件,它是对系统所有用户都适用的。

  2.~/.gitconfig:熟悉linux的用户一定知道,这个~代表的是用户的home目录,在用户的home目录下的这个配置的参数只是适用于当前用户,由于linux是多用户的操作系统,因此为单独的用户配置参数是很好的处理方式,使用git config --global命令就是对当前用户的gitconfig文件进行操作。

  3.第三个就是当前项目文件夹下面的.git/config:这个文件只是影响当前的项目,使用git config时不加参数就是读写当前项目文件的gitconfig。

  windows的gitconfig文件默认为当前用户主目录的.gitconfig文件,具体视情况而定。

  上面的配置文件的优先级为从低到高。

  要查看gitconfig的配置文件信息可以使用

        git config --list 

  如果需要查看单个的参数信息可以使用下面的命令

   git config Enter you argument name #such as git config user.name 

  第二步,在工作目录中初始化仓库:

  使用下面的命令初始化你的仓库

     git init 

  如果你需要查看你的仓库的当前状态,可以使用下面这条命令

     git status 

  它会获取到当前代码仓库的详细信息。

  在git中,资源存放在三个地方,工作目录,暂存目录,git库。

  

  当你在本地编辑文件时,处于工作状态,这时的代码并没有保存,当你使用了git add命令添加到自己的仓库后会处于暂存状态,等到有网络的使用你使用了commit并且push到repository后会存放到git的版本库中,并且保存对所有资源的一个快照(这里的快照是指,当使用git推送资源的时候会根据SHA-1算法生成对项目文件结构的摘要,它是由40个字符组成的串,git根据它判断提交后的资源是否有更新)。

  第三步,从代码仓库获取项目的拷贝:

  使用下面的命令,从git库获取最新的代码项目

  git clone https://github.com/<您的用户名>/<您需要拷贝的项目文件名>.git

  这样你的本地代码仓库中就多了一个以你的项目文件名为名称的文件夹。git支持许多的协议,有git://协议,之前使用的是https://协议,还可以使用username@servername:/path.git的ssh命令,这三种协议各有优点,需要了解可以查看https://协议,还可以使用username@servername:/path.git的ssh命令,这三种协议各有优点,  需要了解可以查看 http://git-scm.com/book/en/Git-on-the-Server-The-Protocols 

        第四步,提交代码到仓库:

在编辑某些文件后,Git将这些文件标记为已修改,我们逐步把文件放到暂存区域,最后提交到git仓库,下面是文件的状态周期示意图:

当我们编辑完一个文件后,可以使用git add跟踪文件,假设我们的项目文件夹下面有一个修改后的test.txt文件,内容为hello git!,使用下面的命令跟踪文件

git add test.txt 

运行完这条命令后,文件就处于暂存状态,现在需要提交我们的代码到本地仓库
 git commit 
 
这条命令会提交我们所做的更新,执行这条命令后默认会打开一个编辑器,默认的一般是vi,要求你添加对文件的描述。如果你希望直接在命令行添加说明,可以加上参数-m
 git commit -m "Enter you summary" 
执行完上面这条语句会直接提交更新,而不用打开编辑器另外添加描述。
 
 
       第五步,推送到git仓库:
在对文件更新完后我们就需要推送到git仓库,首先使用下面这条命令查看下我们的git 远程仓库的信息
  git remote 
 
默认的话会有一个origin的仓库,也可以手动添加仓库
git remote add 您的仓库名 https://github.com/<您的用户名>/<您的项目文件名>.git 
 
执行完上面的语句后,github里面就多了一个自定义的远程库,对其进行的操作和默认的远程库一模一样。现在我们将项目文件推送到默认的远程库。
 
  git push origin master 
 
 
上面这句代码就将本地仓库中的文件推送到了github的远程库,这里的master就是我们本地仓库的默认名称,同样也可以自定义本地仓库的名称,一般使用默认名称。我们还可以使用下面 的命令抓取远程库的数据
  git fetch [remote-name] 
 
 
到此为止,已经将项目文件修改好上传到github了,打开进入github的个人主页,应该已经多了一个test.txt的文件了
以上这就是最简单的GitHub代码托管的流程。
 
最后,附上文章的主要参考来源:http://git-scm.com/book  (Pro Git)
 
posted @ 2014-07-09 16:43  kk~  阅读(355)  评论(0编辑  收藏  举报