已读100%
预计阅读本页时间:-
预计阅读本页时间:-
Table of Contents
起步
关于版本控制
本地版本控制系统
集中化的版本控制系统
分布式版本控制系统
Git 的历史
Git 基础要点
直接快照,而非比较差异
近乎所有操作都可本地执行
时刻保持数据完整性
多数操作仅添加数据
三种状态
安装 Git
从源代码安装
在 Linux 上安装
在 Mac 上安装
在 Windows 上安装
初次运行 Git 前的配置
用户信息
文本编辑器
差异分析工具
查看配置信息
获取帮助
小结
Git 基础
取得项目的 Git 仓库
从当前目录初始化
从现有仓库克隆
记录每次更新到仓库
检查当前文件状态
跟踪新文件
暂存已修改文件
忽略某些文件
查看已暂存和未暂存的更新
提交更新
跳过使用暂存区域
移除文件
移动文件
查看提交历史
限制输出长度
使用图形化工具查阅提交历史
撤消操作
修改最后一次提交
取消已经暂存的文件
取消对文件的修改
远程仓库的使用
查看当前的远程库
添加远程仓库
从远程仓库抓取数据
推送数据到远程仓库
查看远程仓库信息
远程仓库的删除和重命名
打标签
列显已有的标签
新建标签
含附注的标签
签署标签
轻量级标签
验证标签
后期加注标签
分享标签
技巧和窍门
自动完成
Git 命令别名
小结
Git 分支
何谓分支
基本的分支与合并
基本分支
基本合并
冲突的合并
分支管理
分支式工作流程
长期分支
特性分支
远程分支
推送
跟踪分支
删除远程分支
衍合
衍合基础
更多有趣的衍合
衍合的风险
小结
服务器上的 Git
协议
本地协议
SSH 协议
Git 协议
HTTP/S 协议
在服务器部署 Git
将纯目录转移到服务器
小型安装
生成 SSH 公钥
架设服务器
公共访问
网页界面 GitWeb
权限管理器 Gitosis
Git 进程
Git 托管服务
GitHub
建立账户
建立新仓库
从 Subversion 中导入项目
开始合作
项目页面
派生(forking)项目
GitHub 小节
小节
分布式 Git
分布式工作流程
集中式工作流
集成管理员工作流
司令官与副官工作流
为项目作贡献
提交指南
私有的小型团队
私有团队间协作
公开的小型项目
公开的大型项目
小结
项目的管理
使用特性分支进行工作
采纳来自邮件的补丁
检出远程分支
决断代码取舍
代码集成
给发行版签名
生成内部版本号
准备发布
制作简报
小结
Git 工具
修订版本(Revision)选择
单个修订版本
简短的SHA
关于 SHA-1 的简短说明
分支引用
引用日志里的简称
祖先引用
提交范围
交互式暂存
暂存和撤回文件
暂存补丁
储藏(Stashing)
储藏你的工作
从储藏中创建分支
重写历史
改变最近一次提交
修改多个提交说明
重排提交
压制(Squashing)提交
拆分提交
核弹级选项: filter-branch
使用 Git 调试
文件标注
二分查找
子模块
子模块初步
克隆一个带子模块的项目
上层项目
子模块的问题
子树合并
总结
自定义 Git
配置 Git
客户端基本配置
Git中的着色
外部的合并与比较工具
格式化与空白
服务器端配置
Git属性
二进制文件
关键字扩展
导出仓库
合并策略
Git挂钩
安装一个挂钩
客户端挂钩
服务器端挂钩
Git 强制策略实例 #
服务端挂钩
客户端挂钩
总结
Git 与其他系统
Git 与 Subversion
git svn
初始设定
入门
提交到 Subversion
拉取最新进展
Git 分支问题
Subversion 分支
切换当前分支
对应 Subversion 的命令
Git-Svn 总结
迁移到 Git
导入
Subversion
Perforce
自定导入脚本
总结
Git 内部原理
底层命令 (Plumbing) 和高层命令 (Porcelain)
Git 对象
tree (树) 对象
commit (提交) 对象
对象存储
Git References
HEAD 标记
Tags
Remotes
Packfiles
The Refspec
推送 Refspec
删除引用
传输协议
哑协议
智能协议
维护及数据恢复
维护
数据恢复
移除对象
总结