CH01 入门
Git 中文件的三种状态
- 已提交(committed):表示数据已被安全地存入本地数据库中
- 已修改(modified):表示已经改动了文件,但尚未提交到数据库
- 已暂存(staged):表示对已修改文件的当前版本做出了标识,并将加入下一次要提交的快照中
Git 的基本工作流程
(1) 修改工作目录中的文件
(2) 暂存文件,将这些文件的快照加入暂存区
(3) 提交暂存区中的文件,将快照永久地保存在 Git 目录中
安装 Git
Windows:下载安装包,直接安装
Ubuntu:$ sudo apt-get install git-all
Git 的首次配置
(1) 设置用户身份
$ git config --global user.name "John Doe"
$ git config --global user.email John Doe@example.com
(2) 设置个人编辑器
$ git config --global core.editor emacs
(3) 检查个人设置
$ git config --list
单独查看某个键的值
$ git config user.name
获取帮助
$ git help <verb>
$ git <verb> --help
$ man git-<verb>
CH02 Git 基础
2.1 获取 Git 仓库
(1) 在现有目录中初始化 Git 仓库
只需进入项目目录并输入:$ git init
(2) 克隆现有仓库
自动创建新目录$ git clone [url]
克隆到已有目录$ git clone [url] [dir_name]
2.2 在 Git 仓库中记录变更
(1) 查看当前文件状态
$ git status
(2) 跟踪新文件
$ git add [file_name]
(3) 暂存已修改的文件
$ git add [modify_file_name]
把 git add
命令看成“添加内容到下一次提交中”
(4) 显示更简洁的状态信息
$ git status -s
(5) 忽略文件
编辑文件.gitignore
文件,可参考 https://github.com/github/gitignore
(6) 查看已暂存和位暂存的变更
$ git diff
将当前工作目录下的内容与暂存区的内容作对比
$ git diff --staged
查看哪些已暂存的内容会进入下一次提交
$ git diff --cached
查看当前已暂存的更改(与 staged 等效)
(7) 提交变更
$ git commit
或 git commit -m "message"
(8) 跳过暂存区
$ git commit -a
(9) 移除文件
$ git rm [file_name]
把文件从暂存区移除
$ git rm --cached [file_name]
把文件保存在工作目录,但从暂存区移除该文件
(10)移动文件(重命名)
$ git mv file_from file_to
2.3 查看提交历史
$ git log
$ git log -p -2
-p,显示出每次提交所引入的差异;
-2 参数,只输出最近的两次提交
$ git log --stat
查看每个提交的简要统计信息
$ git log --pretty=oneline
--pretty,更改日志输出的默认格式
$ git log --pretty=format:"%h - %an, %ar : %s"
$ git log --graph
--graph 选项会用 ASCII 字符形式的简单图表来显示 Git 分支和合并历史。、
2.4 撤销操作
$ git commit --amend
修改、修订上次提交
$ git reset HEAD filename
撤销己暂存的文件
$ git checkout -- filename
撤销对文件的修改
2.5 远程仓库的使用
CH03 Git 分支机制
3.1 分支机制简述
Git 的分支只不过是一个指向每次提交的轻量级的可移动指针。Git 的默认分支名称是 master。
$ git branch branch_name
创建新分支
$ git checkout branch_name
切换分支
3.2 基本的分支与合并操作
$ git checkout -b branch_name
创建并切换到新分支
$ git merge branch_name
将 branch_name 分支合并到当前分支
$ git mergetool
图形化冲突处理解决工具
3.3 分支管理
$ git branch
获得当前所有分支简短列表
-v 查看每个分支上的最新提交
-- merged 筛选已并入当前分支的所有分支
--no-merged 筛选尚未并入当前分支的所有分支
$ git branch -d branch_name
删除分支
-D 强制删除
3.4 与分支有关的工作流
长期分支
主题分支
3.5 远程分支
$ git fetch origin
与服务器同步
$ git push (origin) (branch)
推送本地分支到远程仓库
$ git checkout --track [remotename]/[branch]
跟踪远程分支
$ git branch -vv
查看已经设置了哪些跟踪分支
$ git pull
读取上游服务器和分支上的数据,并尝试将远程分支上的修改合并到本地
$ git push origin --delete branch_name
删除远程分支
$ git rebase branch_name
变基,把某个分支上所有提交的更改在另一个分支上重现一遍。