# 主题六:版本控制 (Git)
Git 比较熟悉了,不写太多了,自己建几个仓库多尝试尝试就会了。
git 每一个版本被称为快照。历史记录则由快照组成。
Git 在储存数据时,所有的对象都会基于它们的SHA-1 hash进行寻址。
提交标志采用哈希值,但是不易读。于是添加了引用,方便阅读。引用可以被更新,指向新的提交。
基础
- git help
: 获取 git 命令的帮助信息 - git init: 创建一个新的 git 仓库,其数据会存放在一个名为 .git 的目录下
- git status: 显示当前的仓库状态
- git add
: 添加文件到暂存区 - git commit: 创建一个新的提交
- git log: 显示历史日志
- git log --all --graph --decorate: 可视化历史记录(有向无环图)
- git diff
: 显示与上一次提交之间的差异 - git diff
: 显示某个文件两个版本之间的差异 - git checkout
: 更新 HEAD 和目前的分支
分支和合并
- git branch: 显示分支
- git branch
: 创建分支 - git checkout -b
: 创建分支并切换到该分支 - 相当于 git branch
; git checkout
- 相当于 git branch
- git merge
: 合并到当前分支 - git mergetool: 使用工具来处理合并冲突
- git rebase: 将一系列补丁变基(rebase)为新的基线
远端操作
- git remote: 列出远端
- git remote add
: 添加一个远端 - git push
: : 将对象传送至远端并更新远端引用 - git branch --set-upstream-to=
/ : 创建本地和远端分支的关联关系 - git fetch: 从远端获取对象/索引
- git pull: 相当于 git fetch; git merge
- git clone: 从远端下载仓库
撤销
- git commit --amend: 编辑提交的内容或信息
- git reset HEAD
: 恢复暂存的文件 - git checkout --
: 丢弃修改
Git 高级操作
- git config: Git 是一个 高度可定制的 工具
- git clone --shallow: 克隆仓库,但是不包括版本历史信息
- git add -p: 交互式暂存
- git rebase -i: 交互式变基
- git blame: 查看最后修改某行的人
- git stash: 暂时移除工作目录下的修改内容
- git bisect: 通过二分查找搜索历史记录
- .gitignore: 指定 故意不追踪的文件
资源很多,我只推荐这一个 : learngitbranching
← 主题五:命令行环境 主题七:调试及性能分析 →