目录
一、版本控制系统简介
1、本地版本控制系统
2、集中化的版本控制系统
3、分布式版本控制系统
二、git简介
1、git特点
- 速度
- 简单的设计
- 对非线性开发模式的强力支持(允许成千上万个并行开发的分支)
- 完全分布式
- 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)
自诞生于 2005 年以来,git 日臻成熟完善,在高度易用的同时,仍然保留着初期设定的目标。 它的速度飞快,极其适合管理大项目,有着令人难以置信的非线性分支管理系统。
注意: git必看秘籍:https://git-scm.com/book/zh/v2
2、git的三种状态
git 有三种状态:已提交(committed)、已修改(modified) 和 已暂存(staged)。
- 已修改表示修改了文件,但还没保存到数据库中。
- 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
- 已提交表示数据已经安全地保存在本地数据库中。
这会让我们的 git 项目拥有三个阶段:工作区、暂存区以及 git 目录。
三、git使用
1、获取 git 仓库的两种方式
- 将尚未进行版本控制的本地目录转换为 git 仓库。
- 从其它服务器克隆 一个已存在的 git 仓库。比如: git clone
2、git安装
yum install -y git
- 初始化版本库:
$ mkdir demo
$ git init
Initialized empty git repository in /home/git/demo/.git/
$ ls .git/
branches config description HEAD hooks info objects refs
注意:.git
目录是git跟踪管理版本库的,没事别瞎溜达!
3、git使用
(1)本地使用
- 用户信息
$ git config --global user.name "yll"
$ git config --global user.email "yang@example.com"
- 检查当前文件状态
$ git status
$ git status -s //简化输出
- 状态简览
$ git status -s
M README
MM Rakefile
A lib/git.rb
M lib/simplegit.rb
?? LICENSE.txt
- 跟踪新文件
$ git add README
- 忽略文件
$ cat .gitignore
.* //忽略所有隐藏文件
/test //只忽略当前目录下的test文件
build/ //忽略任何目录下名为 build 的文件夹
- 查看已暂存和未暂存的修改
$ git diff
- 提交更新
$ git commit
- 跳过使用暂存区域
$ git commit -a -m 'added new benchmarks'
- 移除文件
$ git rm PROJECTS.md
$ git rm --cached README
- 重命名文件
$ git mv README.md README
其实,运行 git mv 就相当于运行了下面三条命令:
$ mv README.md README
$ git rm README.md
$ git add README
- 查看提交历史
$ git log
$ git log -p -2
$ git log --stat
$ git log --pretty=oneline
- 取消暂存的文件
$ git reset HEAD README.md
- 撤消对文件的修改
$ git checkout -- README.md
- 版本回退:
$ git reset --hard efa267a
运行原理:
(2)使用远程仓库
- 注册github帐号,并新建一个仓库:
- 使用https方式推送每次需要输入用户名和密码,如果不想麻烦的话采用ssh方式:
$ ssh-keygen
- 生成本地密钥,并上传公钥到github:
- 推送本地仓库内容到github:
$ git remote add origin git@github.com:yanglulu666/demo.git //关联远程仓库
$ git push -u origin master //第一次推送需要加 -u参数
- 克隆远程仓库:
$ git clone git@github.com:yanglulu666/demo.git