一、什么是Git

GIt是分布式版本控制系统。

那什么是版本控制系呢?我们都有过这样的体验,就是同一个文档保存成这样:

xxxxx.doc

xxxxx(1).doc

xxxxx(2).doc

xxxxx(最终版).doc

为什么会出现这样的情况?原因很简单,我们不敢把先前的文档删了,害怕改过以后的文档还不如先前的文档,删了以后就找不回来了,这个时候就是我们手动管理版本。Git的出现结束了手动管理版本的时代,并提供了比手动管理更强大的功能。

那Git是怎么管理不同版本的呢?

二、Git管理版本的原理

在使用Git进行版本管理时,首先要先创建一个仓库(Repository),其实就是一个内含Git管理文件的文件夹。仓库包含两大部分,如下:

 

工作区就是我们的文件夹,我们添加、修改和删除文件夹下的内容,不会影响版本库中的内容(其实版本库也在文件夹下,只不过是一种隐藏文件而已)。

三、Git的使用(Ubuntu 系统下)

1、安装Git

sudo apt-get install git

安装后告诉Git系统你的姓名和邮件地址

git config --global user.name "your name"
git config --global user.email "your email"

--global参数表示为该机器中的所有仓库都配备统一的用户名和邮件地址。

2、创建仓库

mkdir myrepo
cd myrepo
git init

3、将修改提交至版本库

假设现在在repo文件下新建了一个readme文件,对改文件进行提交

git add readme
git commit -m "First Commit"

必须先add再commit,commit是从stage(缓冲区)提交至HEAD所指向的分支,初始只有maste分支,master本身实际也是一个指针,指向主分支的最新版本,HEAD又指向master。

其中-m参数用来给出提交信息,写在双引号中。

4、查看工作区状态

当我们想知道那些内容修改了还没有add或是add后还没有commit,就可以查看工作区状态:

git status

5、查看工作区和缓存区中某个文件的差异

git diff readme

6、查看提交记录

git log

7、回退到某个版本

回退到上一个版本,

方法一:

git reset [--hard] HEAD^

方法二:

git reset [--hard] 45d3

45d3是每次提交产生的hash值得前四位,最好能唯一标定某个版本就好。

8、回退某个版本后再回到最新的版本

第一步:先找到版本号

git reflog

该命令会列出你的历史操作记录,记录对某个版本进行了什么操作,且给出了版本号。

第二步:

git reset [--hard] 4ddd

9、chechout

第一种用法:用版本库中的版本(缓冲区和分支中)替换工作区中文件。

git checkout -- filename

用缓存区中的指定文件替换工作区中同名文件。

git checkout HEAD filename

用版本库中的HEAD指向的版本中的指定文件替换工作区中同名文件。

第二种用法:切换分支

10、分支操作

git branch    #查看分支状态
git branch BranchName    #创建分支
git checkout BranchName    #切换分支
git chechout -b BranchName    #创建并切换分支
git merge BranchName    #将指定分支合并到当前分支
git branch -d BranchName    #删除分支
git log --graph #显示分支合并图

若在合并分支的时候出现冲突,即两个分支都进行改动了,则需要先处理冲突再合并。

分支的作用非常大,一个仓库通常一个master分支,专门用来发布软件的,一般不改动,还有一个dev分支,专门用于开发,每个程序员还有个分支,并定期的合并到dev分支中,并在开发完成后从dev分支合并到maste分支用于发布软件。

11、标签管理

git tag TagName    #在HEAD指向的版本处打一个标签
git tag TagName CommitId    #在指定版本号处打标签
git show TagName    #显示指定标签版本的信息
git tag    #查看所有标签
git tag -d TagName #删除标签

四、GitHub

前面说Git是一个分布式的版本控制系统,不同于集中式的版本控制系统(SVN、CVS),分布式中每台都是独立的,没有服务器的概念。但为了方便协作开发,通常会认为的选定一台机器作为中转机器24小时开机,在该机器上进行协作开发,GitHub就是这么一个东西。如何用Git进行远程操作也就变成了如何使用GitHub的问题。

1、由于Git采用SSH传输,先在本地生成SSH秘钥

ssh-keygen -t rsa -C "youremail@example.com"

然后直接回车,最终会在你的home目录下生成.ssh文件夹,里面有两个文件id_rsa和id_rsa.pub,把id_rsa.pub中的秘钥复制到GItHub中就好。

2、将GitHub上的库与本地关联

git remote add origin git@server-name:path/repo-name.git

注意:先要在本地建立一个和GitHub上名字一样的文件夹。

3、将GitHub上的库克隆到本地上

git clone git@github.com:server-name/project-name.git

4、将本地库推送到GitHub上

git push [-u] origin master

第一次用加上参数-u,意思表示将master分支推送到origin(代表远程仓库)。

五、使用GitHub参与开源项目

1、找到一个开源项目Fork到自己的账号上来

2、在自己的电脑将该项目cloneg下来,注意:直接在别人账号下clone是没有权限的。

3、在本地主机修个bug或是添加功能,然后推送的GitHub上

4、如果你感觉你的写的还可以,你在GitHub上点击pull request,最后你的代码到底能不能被用上,还得看这个开源项目的官方会不会接受。

 

本文参考GitHub教程

 

Posted on 2017-07-03 20:25  小小旅行商  阅读(148)  评论(0编辑  收藏  举报