GitHub 教程

Posted by Young Ken on 2016-05-07

Git简介

Git是世界上最先进的版本控,没有之一;

Git 诞生史

  • Linus在1991年创建了开源的Linux;
  • 在2002年以前,Liuns通过手工完成代码的合成,以为Liunx代码量很大,Liuns没有办法通过手工的方式合成代码,BitMover公司提供了一个免费的版本控制系统;
  • 2005Liunx社区破解BitMover协议,被BitMover发现,收回免费版本。
  • 重点来了:Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月后Liunx用Git管理,牛逼的定义就是这样了。每次看到这里都血脉膨胀啊!!!
  • 2008年,GitHub网站上线了。

Git和GitHub的关系

  • git是一个版本控制工具;
  • github是一个用git做版本控制的项目托管平台;

Git和Svn的区别

Svn是集中控制的方式,也就是一个服务端和多个客户端;

  • 缺点:
    1.如果主机出现了问题,都不能工作;
    2.主机坏了,数据将丢失;
    3.必须连接网络才能工作;

Git是分布式版本控制系统,每个主机上都有完整的代码(这里也有一个中央服务,它的作用只是交换合并代码的时候有用)

  • 优点
    1.因为每个主机上都有完整的代码,主机坏了一样有代码;
    2.没有网络也能提交代码,因为每个主机上都能有一个完整的代码库;

Git的安装和使用

Git的安装

Liunx的安装

1
2
3
4
$ git
The program 'git' is currently not installed. You can install it by typing:
$ sudo apt-get install git
$ git --version

Window安装
下载软件

配置用户信息

1
2
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

查看配置config命令

1
$ git config -l

Git的使用

创建版本库和常用命令

创建版本库就是创建一个文件夹,这个文件夹的下代码和文件会被Git跟踪,以便追踪历史,在某个时刻进行还原。

  • 创建版本库命令;

    1
    $ git init
  • 在版本库中添加一个文件,手动创建一个文件,随便来一个;

  • 查看版本库中文件的状态命令;
    1
    $ git status

这个时候看见的状态是这样的,这个时候会到新建的文件是红色的,这个状态表明新建文件没有被跟踪

  • 添加文件跟踪,不文件暂存起来;

    1
    $ git add 文件名
  • 提交到版本库;
    现在你已经创建了第一个提交!可以看到,提交后它会告诉你,当前是在哪个分支(master)提交的,本次提交的完整 SHA-1 校验和是什么(463dc4f),以及在本次提交中,有多少文件修订过,多少行添改和删改过。

    1
    $ git commit -m "注释"
  • 这里面有个简单的小问题,如果你对已经暂存的文件进行修改就会发现这个文件有两个状态,一个是暂存的状态,一个是没有暂存的状态,这个时候执行commit就会提交暂存状态的文件,解决方案从新add一次;

  • gitignore文件 忽略文件;

    1
    2
    3
    4
    5
    6
    此为注释 – 将被 Git 忽略
    *.a # 忽略所有 .a 结尾的文件
    !lib.a # 但 lib.a 除外
    /TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
    build/ # 忽略 build/ 目录下的所有文件
    doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
  • 查看文件暂存的时候和现在的不同;

    1
    $ git diff 文件名
  • 查看文件暂存之后的不同;

    1
    $ git diff --staged

常用命令之查看提交历史

  • 查看log

    1
    $ git log
  • 简单查看log

    1
    $ git log --pretty=oneline
  • 时光穿梭机

    1
    $ git reset --hard 3628164

可以简单写回到上个版本 ~100 上100个版本

1
$ git reset --hard HEAD^

如果回到第一个版本那么找到头文件

1
$ git reflog

  • 删除文件;
    用命令删除文件
    1
    $ rm 文件名

这个时候只是删除了文件的,但在Gis中这个文件还在被跟踪,没有被删除

1
$ git rm 文件名

这个时候在git中删除文件
注意这个命令会删除文件,但是有的时候我们不想删除文件,只是不想跟踪这个文件了怎么办

1
$ git rm --cached 文件名

  • 文件从命名
    1
    $ git mv file_from file_to

这里有一个小的问题,如果我在版本库中重新命名了一个文件怎么办
这时候先删除这个文件在Git中的暂存状态,然后在从新添加从命名的问题就ok了。