一、Git 基础知识
1-1 什么是版本控制系统?
版本控制系统即 VCS (Version Control System) ,它是一种记录若干文件修订记录的系统,它能帮助我们查阅或回到某个历史版本。
常见的版本控制系统有:“人肉版”VCS,LVCS本地式,CVCS集中式,DVCS分布式。“集中式”只有一个中央服务器,“分布式”中每个人都有自己的本地版本控制中心。
1-2 什么是 Git ?
Git是一个免费开源的分布式版本控制系统(DVCS),Git是一个基于内容寻址的存储系统。
使用Git版本控制工具,能做哪些事情?
- 1. 我们可以回退到某个历史版本。
- 2. 我们可以查看某个历史版本。
- 3. 我们可以对两个版本进行差异比较。
1-3 Git 有哪些优势?
- Git最大的特点是“快”,因为它不依赖于网络。
- Git是完全的分布式。Git的分支操作非常轻量级。
- Git已经成为现实意义上的标准。
- Git的社区很成熟并且活跃,如GitHub。
1-4 什么是分支?什么是分支模型?
分支,即从目标仓库获得一份项目拷贝,每份拷贝都有和原仓库功能一样的开发线。
分支模型(branching model),也叫工作流(workflow),即一个围绕项目(开发、部署、测试)等工作流程的分支操作(创建、合并等)的规范集合。
Git 分支 与 常用的四个环境。常用的四个环境,分别是:开发环境(development分支)、测试环境(development分支 或 release分支)、预发布环境(release分支)、生产环境(master分支)。
1-5 .gitignore 文件
在 git add 时忽略匹配的文件,仅作用于未追踪的文件。
二、Git 常用命令
2-1 查看某个 Git 命令的用法和相关信息
git help <command>
git <command> -h
git <command> --help
man git-<command>
或者 查看 Git 文档
举例:查看 checkout 命令的用法和相关信息
git help checkout
git checkout -h
git checkout --help
2-2 Git 配置
配置级别
git config --local # 默认,优先级最高,它只影响本仓库 .git/config
git config --global # 中优先级,影响到所有当前用户的 Git 仓库 ~/.gitconfig
git config --system # 最低优先级,影响到全系统的 Git 仓库 /etc/gitconfig
用户配置
git config --global user.name "geekxia"
git config --global user.email "geekxia@qq.com"
2-3 仓库初始化与状态跟踪
git init #初始化仓库
git status # 查看仓库状态
2-4 git add 提交文件至暂存区
跟踪所有文件
git add .
git add index.html
git status
2-5 git rm 删除
从暂存区删除文件
git rm --cached
从暂存区和工作目录中删除
git rm
删除所有被跟踪、但在工作目录中被删除了的文件
git rm $(git ls -files --deleted)
2-6 Git 提交与查看提交历史记录
git commit -m '提交备注'
git commit -a '提交备注' // 直接提交
git status
查看提交历史
git log
git log --color --graph
git log --oneline
2-7 给复杂的 git 命令设置别名
设置 Git 命令别名的语法
git config alias.shortname <fullcommand>
举例:给 git log --color --graph 设置别名 git geek
git config --global alias.geek "log --color --graph"
使用自定义的 Git 命令
git geek
2-8 git diff 比较工作目录、暂存区和提交区之间的差异
2-9 如何把内容从暂存区撤回至工作目录?
2-10 如何把提交区中的内容撤回至工作目录?
2-11 如何把提交区中内容撤回至暂存区?
关于工作目录、暂存区和提交区之间的工作关系:
2-12 分支增加、删除与查看
增加一个分支
git branch <branchName>
删除一个分支
git branch -d <branchName>
查看所有分支
git branch -v
2-13 分支切换
分支切换原理:通过移动 HEAD 指针来检出版本,即分支切换。
切换到 test 分支
git checkout test
git checkout -b test
git checkout <reference>
让 HEAD 指针指向下一个分支
git checkout next
让 HEAD 指针恢复到上一个分支
git checkout -
2-14 git stash 与 git reset
git stash 保存当前工作目录和暂存区的状态,并返回一个干净的工作空间。
git reset 版本回退(在当前分支中,回退到某个历史版本)
git reset --mixed <commit> // 默认
git reset --soft <commit>
git reset --hard <commit>
2-15 分支合并与冲突解决
git merge test
2-16 给 Git 提交 打标签
对某一次提交设置一个不变的别名
git tag
2-17 远程仓库相关操作
Git 支持本地协议,所以我们可以初始化一个本地的远程服务器。
git init ~/git-server --bare
远程仓库相关配置与操作
git remote
git remote -v
git remote add origin ~/git-server
提交本地历史至远程仓库
git push
获取远程仓库的提交历史·
git fetch
2-18 git pull 与 git clone
git pull = git fetch + git merge
克隆一个远程仓库作为本地仓库
git clone