Git 和 Github 使用教程

目录:

  • Git 是什么?

  • Git 安装

  • 工作区和暂存区的概念

  • 创建版本库, 版本提交, 提交历史, 版本切换, 管理修改

  • GitHub 使用

  • 远程仓库

  • 标签管理


1. Git 是什么?

Git 是目前世界上最先进的分布式版本控制系统。也就是:Git 可以帮我们自动记录每次保持地文件改动, 并且可以与他人合作同时修改,然后再进行合并。
SVN 与 Git 的最主要的区别:

  1. Git 是分布式版本控制系统,版本分布在各地;SVN 是集中式版本控制系统,版本库是集中放在*服务器的

  2. Git 把内容按元数据方式存储,而SVN是按文件。

  3. Git 没有一个全局的版本号,而 SVN 有:目前为止这是跟 SVN 相比 GIT 缺少的最大的一个特征。

  4. Git 的内容完整性要优于 SVN:Git 确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

2. Git 安装

Git 各版本下载地址:https://git-scm.com/downloads

Windows 下安装一直 next 到安装,完成安装之后,就可以使用命令行的 git 工具(已经自带了 ssh 客户端)了,另外还有一个图形界面的 Git 项目管理工具 Git GUI。

Linux 下安装:Debian/Ubuntu :

sudo apt-get install git

CentOS/RedHat 安装:

yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
yum -y install git

启动 Git :创建一个空的文件夹,在空白处右键; 在 Linux 直接可以进行 git 命令操作。

Git 和 Github 使用教程

配置用户名称和电子邮件

$ git config --global user.name "Your Name"
$ git config --global user.email [email protected]

Git 和 Github 使用教程

3. 工作区、暂存区

工作区、版本库中的暂存区和版本库之间的关系:

Git 和 Github 使用教程

工作区:
就是你在电脑里能看到的目录,比如我的 test 文件夹就是一个工作区
暂存区:
工作区有一个隐藏目录 .git,这就是 Git 的版本库。在版本库中标记为 "index" 的区域是暂存区(stage, index),标记为 "master" 的是 master分支所代表的目录树。图中我们可以看出此时 "HEAD" 实际是指向 master 分支的一个"游标"。

Git 工作流程:

创建仓库;修改文件;添加到暂存区;提交到版本库。

只有先 add 到暂存区, 才能被 commit 到版本库。

4. Git 的基本使用

版本库又名仓库,英文名 repository,可以简单理解成一个目录,这个目录里面的所有文件都可以被 Git 管理起来,每个文件的修改、删除,Git 都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

仓库操作

   初始化一个仓库              git init
修改的文件添加到缓存      git add file
缓存内容提交到仓库          git commit -m "commit instructions"

在当前目录下新建一个文件 file.txt, 然后提交到版本库。

Git 和 Github 使用教程

仓库状态

查看当前仓库的状态          git status
对比工作区和缓存区          git diff
对比工作区与版本库          git diff HEAD -- file

修改 file.txt 的内容但不保存到缓冲区,然后用 git status 查看仓库的状态。

Git 和 Github 使用教程

用 git add 保存到缓冲区,,再次查看仓库状态。

Git 和 Github 使用教程

用 git commit 把修改提交到版本库, 就会显示已经全部提交。
版本切换

查看提交历史                   git log
查看命令历史                   git reflog      #包括提交, 回退等
回退到前面的版本            git reset HEAD~1     #1表示前一个版本, 2表示前两个版本, 类推
跳转到指定版本                git reset commitid #commitid 是提交版本号

查看提交历史

Git 和 Github 使用教程

版本回退与跳转

Git 和 Github 使用教程

管理修改

丢弃工作区的修改         git checkout -- file     
丢弃缓冲区的修改         git reset HEAD file      #回到add之前的状态
        删除文件               git rm file

Git 和 Github 使用教程

如果修改已经被 add 添加到暂存区, git reset HEAD -- file 可以放弃保存, 回到 add 之前的状态。

Git 和 Github 使用教程


5. GitHub 使用

GitHub  提供 Git 仓库托管服务。在GitHub上免费托管的Git仓库,任何人都可以看到(但只有你自己才能改)。由于你的本地 Git 仓库和 GitHub 仓库之间的传输是通过 SSH 加密的,所以设置如下:

  • 创建SSH Key。 在用户主目录下,如果有 .ssh 且目录下有 id_rsa 和 id_rsa.pub 这两个文件,直接跳到下一步。如果没有,打开 Git Bash (或 Shell)创建SSH Key:

$ ssh-****** -t rsa -C [email protected]

你需要把邮件地址换成你自己的邮件地址,然后一路回车。如果创建成功,可以在用户主目录里找到 .ssh 目录,里面有 id_rsa 和id_rsa.pub 两个文件,这两个就是 SSH Key 的秘钥对,id_rsa 是私钥,id_rsa.pub 是公钥。

  • 注册 GitHub 账号, 完成之后登陆。打开 “Account settings”,“SSH Keys” 页面, 然后,点 “Add SSH Key”,填上任意 Title,在Key文本框里粘贴id_rsa.pub文件的内容。Git 和 Github 使用教程

新建一个仓库

Git 和 Github 使用教程

这个仓库就是下面这个样子

Git 和 Github 使用教程

接下来我们看看怎么用 Git 来获取 GitHub 仓库的内容, 在本地修改之后把提交推送到 GiuHub 上。

6. Git 连接 GitHub 远程仓库

关联一个远程仓库        git remote add origingit@github.com:xgf13469/MyRepos.git        #ssh 传送
  推送本地仓库             git push origin master
克隆一个远程仓库        git clone https://github.com/xgf13469/MyRepos.git      #https 传送

Git 和 Github 使用教程

提交之后, 推送本地仓库

Git 和 Github 使用教程

在 GitHub 上面可以看到文件已经被推送。

Git 和 Github 使用教程

7. 标签管理

标签是版本库的一个快照:发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。

标签更容易理解,切换版本时使用也更方便。

参考文献:
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001373962845513aefd77a99f4145f0a2c7a7ca057e7570000
http://blog.csdn.net/free_wind22/article/details/50967723
http://www.runoob.com/git/git-tutorial.html