GitHub 教程
笔记来源于
http://player.bilibili.com/player.html?aid=98007542&bvid=BV1FE411P7B3&cid=167299076&page=9
1. 版本控制
什么是版本控制 ?
就是版本迭代

上面的版本,很多,我们需要控制版本,如果直接像这样就非常的麻烦.
有什么用?
- 实现多人协同开发
- 记录文件的历史记录
- 统计工具量,等
常见的版本控制工具
- Git (最流行的)
- SVN
- CVS
- VSS
- TFS
- Visual Studio Online
1.1 本地版本控制

记录每次的版本更新,可以对每一次版本做一个快照,或是记录补丁文件,适合个人用,如 RCS.
1.2 集中版本控制

所有的版本放在服务器上有个问题,如果 Cetntral VSC Server 如果出问题,那么所有的东西就会没了,这样是不利于我们的文件保存的.而且是需要联网什么的,服务器一坏,所有东西就会没了 !!!
代表性产品: SNV, CVS, VSS
1.3 分布式版本控制 Git

每个人都有全部的代码,好处就是本地就可以看到所有版本信息.所有人都是一个版本,不会因为一个版本损坏,或者服务器损坏,导致不能工作.
Git 和 SVN 最主要的区别?
一个是分布式, 一个是集中管理
2. Git 历史

Linux和Git之父李纳斯;托沃兹( Linus Benedic Torvalds ) 1969 芬兰
Linux 作者两周开发的!!
3. Git 的下载和安装
下面是 Git 官网, 去下载就行了.
下载慢可以找国内的镜像,
4. Git 的配置
4.1 Git 的相关配置
查看系统 config
1 |
|
查看当前用户(global) 配置 ,
1 |
|

这里是配置了 用户名 和 密码 ,告诉你是谁提交了.
所有的配置文件,都保存在本地,
4.2 Git 的配置
1 |
|
5. Git 的工作原理(核心)

- 工作目录 就是平时存放项目代码的地方
- 暂存区 临时存放你的改动,事实上它只是一个文件
- 本地历史 仓库区,就是安全存放数据的位置,这里有你提交所有版本的数据
- 远程仓库 托管代码的服务器,可以简单认为是你项目组中的一台电脑用于远程数据交换
6. Git 项目搭建
工作目录( workspace )一般就是你希望 Git 帮助你管理的文件夹, 可以是你的项目的目录, 也可以是一个空目录, 最好不要有中文.
6.1 本地仓库搭建
初始化当前项目
1 |
|
6.2 克隆远程仓库
- 克隆远程目录到本地,由于是将远程无服务器上的远程服务器上的仓库完全镜像一份到本地!
1 |
|
- 去 gitee 或者 GitHub 上克隆一个测试
7. Git 文件操作
7.1 文件四种状态
- Untracked 未跟踪,此文件在文件夹中,但没有加入到 git 库, 不参与版本控制.
通过git add
状态变成 Staged - Unmodify 文件已经入库,未修改,即版本库中的文件快照内容和文件夹中完全一致,这种类型的文件有两种去处
- 如果被修改, 而变成 Modified
- 如果使用
git rm
移出版本库, 则变成 Untracked 文件
- Modifiled 文件已修改,仅仅是修改,没有进行其他操作,这个这个文件也有两个去处
- 通过
git add
可以进入暂存 staged 状态 - 使用
git checkout
则丢弃修改过,回到 Unmodify 状态,这个git checkout
即从库中取出文件, 覆盖当前修改!
- Staged 暂存状态,
- 执行
git commit
则将修改同步到库中,这时库中的文件和本地文件又变为一致,文件为 Unmodify 状态, - 执行
git reset HEAD filename
取消暂存,文件状态变为 Modified
7.2 查看文件状态
使用
1 |
|
7.3 忽略文件
有时候我们并不想将所有文件都提交上去, 某些文件我们不想提交上去, 比如以 .chk
结尾的文件我们不想提交上去怎么办呢?
在主目录下建立一个 .gitignore
文件, 此文件可以填入以下规则
1 |
|
7.4 实战
1. 查看所有文件状态
1 |
|
2. git add 状态变成Staged
1 |
|
3. 提交到本地仓库
1 |
|
7.5 使用 GitHub 或 Gitee
注册 GitHub 或 Gitee 完善个人信息
设置本级 SSH 公钥,实现免密登录(重要步骤)
1
ssh-keygen
将公钥信息 public key 添加到 GitHub 账户中即可
8. Git 分支说明
8.1 概述
上面的都是个人操作, 不是协同, 我们需要使用分支来做, GitHub 分支比较重要, 也比较难.
下面这个 GitHub 项目就有很多分支, 可以看到

8.2 git 中常用的分支命令
1 |
|
