Pro Git

  1. Scott Chacon 序
  2. Ben Straub 序
  3. 献辞
  4. 贡献者
  5. 引言
  6. 起步
    1. 关于版本控制
      1. 本地版本控制系统
      2. 集中化的版本控制系统
      3. 分布式版本控制系统
    2. Git 简史
    3. Git 基础
      1. 直接记录快照,而非差异比较
      2. 近乎所有操作都是本地执行
      3. Git 保证完整性
      4. Git 一般只添加数据
      5. 三种状态
    4. 命令行
    5. 安装 Git
      1. 在 Linux 上安装
      2. 在 Mac 上安装
      3. 在 Windows 上安装
      4. 从源代码安装
    6. 初次运行 Git 前的配置
      1. 用户信息
      2. 文本编辑器
      3. 检查配置信息
    7. 获取帮助
    8. 总结
  7. Git 基础
    1. 获取 Git 仓库
      1. 在现有目录中初始化仓库
      2. 克隆现有的仓库
    2. 记录每次更新到仓库
      1. 检查当前文件状态
      2. 跟踪新文件
      3. 暂存已修改文件
      4. 状态简览
      5. 忽略文件
      6. 查看已暂存和未暂存的修改
      7. 提交更新
      8. 跳过使用暂存区域
      9. 移除文件
      10. 移动文件
    3. 查看提交历史
      1. 限制输出长度
    4. 撤消操作
      1. 取消暂存的文件
      2. 撤消对文件的修改
    5. 远程仓库的使用
      1. 查看远程仓库
      2. 添加远程仓库
      3. 从远程仓库中抓取与拉取
      4. 推送到远程仓库
      5. 查看远程仓库
      6. 远程仓库的移除与重命名
    6. 打标签
      1. 列出标签
      2. 创建标签
      3. 附注标签
      4. 轻量标签
      5. 后期打标签
      6. 共享标签
      7. 检出标签
    7. Git 别名
    8. 总结
  8. Git 分支
    1. 分支简介
      1. 分支创建
      2. 分支切换
    2. 分支的新建与合并
      1. 新建分支
      2. 分支的合并
      3. 遇到冲突时的分支合并
    3. 分支管理
    4. 分支开发工作流
      1. 长期分支
      2. 特性分支
    5. 远程分支
      1. 推送
      2. 跟踪分支
      3. 拉取
      4. 删除远程分支
    6. 变基
      1. 变基的基本操作
      2. 更有趣的变基例子
      3. 变基的风险
      4. 用变基解决变基
      5. 变基 vs. 合并
    7. 总结
  9. 服务器上的 Git
    1. 协议
      1. 本地协议
      2. HTTP 协议
      3. SSH 协议
      4. Git 协议
    2. 在服务器上搭建 Git
      1. 把裸仓库放到服务器上
      2. 小型安装
    3. 生成 SSH 公钥
    4. 配置服务器
    5. Git 守护进程
    6. Smart HTTP
    7. GitWeb
    8. GitLab
      1. 安装
      2. 管理
      3. 基本用途
      4. 一起工作
    9. 第三方托管的选择
    10. 总结
  10. 分布式 Git
    1. 分布式工作流程
      1. 集中式工作流
      2. 集成管理者工作流
      3. 司令官与副官工作流
      4. 工作流程总结
    2. 向一个项目贡献
      1. 提交准则
      2. 私有小型团队
      3. 私有管理团队
      4. 派生的公开项目
      5. 通过邮件的公开项目
      6. 总结
    3. 维护项目
      1. 在特性分支中工作
      2. 应用来自邮件的补丁
      3. 检出远程分支
      4. 确定引入了哪些东西
      5. 将贡献的工作整合进来
      6. 为发布打标签
      7. 生成一个构建号
      8. 准备一次发布
      9. 制作提交简报
    4. 总结
  11. GitHub
    1. 账户的创建和配置
      1. SSH 访问
      2. 头像
      3. 邮件地址
      4. 两步验证
    2. 对项目做出贡献
      1. 派生(Fork)项目
      2. GitHub 流程
      3. 合并请求的进阶用法
      4. Markdown
    3. 维护项目
      1. 创建新的版本库
      2. 添加合作者
      3. 管理合并请求
      4. 提醒和通知
      5. 通知页面
      6. 网页通知
      7. 邮件通知
      8. 特殊文件
      9. README
      10. 贡献 CONTRIBUTING
      11. 项目管理
    4. 管理组织
      1. 组织的基本知识
      2. 团队
      3. 审计日志
    5. 脚本 GitHub
      1. 钩子
      2. GitHub API
      3. 基本用途
      4. 在一个问题上评论
      5. 修改 Pull Request 的状态
      6. Octokit
    6. 总结
  12. Git 工具
    1. 选择修订版本
      1. 单个修订版本
      2. 简短的 SHA-1
      3. 分支引用
      4. 引用日志
      5. 祖先引用
      6. 提交区间
    2. 交互式暂存
      1. 暂存与取消暂存文件
      2. 暂存补丁
    3. 储藏与清理
      1. 储藏工作
      2. 创造性的储藏
      3. 从储藏创建一个分支
      4. 清理工作目录
    4. 签署工作
      1. GPG 介绍
      2. 签署标签
      3. 验证标签
      4. 签署提交
      5. 每个人必须签署
    5. 搜索
      1. Git Grep
      2. Git 日志搜索
    6. 重写历史
      1. 修改最后一次提交
      2. 修改多个提交信息
      3. 重新排序提交
      4. 压缩提交
      5. 拆分提交
      6. 核武器级选项:filter-branch
    7. 重置揭密
      1. 三棵树
      2. 工作流程
      3. 重置的作用
      4. 通过路径来重置
      5. 压缩
      6. 检出
      7. 总结
    8. 高级合并
      1. 合并冲突
      2. 撤消合并
      3. 其他类型的合并
    9. Rerere
    10. 使用 Git 调试
      1. 文件标注
      2. 二分查找
    11. 子模块
      1. 开始使用子模块
      2. 克隆含有子模块的项目
      3. 在包含子模块的项目上工作
      4. 子模块技巧
      5. 子模块的问题
    12. 打包
    13. 替换
    14. 凭证存储
      1. 底层实现
      2. 自定义凭证缓存
    15. 总结
  13. 自定义 Git
    1. 配置 Git
      1. 客户端基本配置
      2. Git 中的着色
      3. 外部的合并与比较工具
      4. 格式化与多余的空白字符
      5. 服务器端配置
    2. Git 属性
      1. 二进制文件
      2. 关键字展开
      3. 导出版本库
      4. 合并策略
    3. Git 钩子
      1. 安装一个钩子
      2. 客户端钩子
      3. 服务器端钩子
    4. 使用强制策略的一个例子
      1. 服务器端钩子
      2. 客户端钩子
    5. 总结
  14. Git 与其他系统
    1. 作为客户端的 Git
      1. Git 与 Subversion
      2. Git 与 Mercurial
      3. Git 与 Perforce
      4. Git 与 TFS
    2. 迁移到 Git
      1. Subversion
      2. Mercurial
      3. Perforce
      4. TFS
      5. 一个自定义的导入器
    3. 总结
  15. Git 内部原理
    1. 底层命令和高层命令
    2. Git 对象
      1. 树对象
      2. 提交对象
      3. 对象存储
    3. Git 引用
      1. HEAD 引用
      2. 标签引用
      3. 远程引用
    4. 包文件
    5. 引用规格
      1. 引用规格推送
      2. 删除引用
    6. 传输协议
      1. 哑协议
      2. 智能协议
      3. 协议总结
    7. 维护与数据恢复
      1. 维护
      2. 数据恢复
      3. 移除对象
    8. 环境变量
      1. 全局行为
      2. 版本库位置
      3. 路径规则
      4. 提交
      5. 网络
      6. 比较和合并
      7. 调试
      8. 其它
    9. 总结
  16. 其它环境中的 Git
    1. 图形界面
      1. gitk 和 git-gui
      2. Mac 和 Windows 上的 GitHub 客户端
      3. 其它图形界面
    2. Visual Studio 中的 Git
    3. Eclipse 中的 Git
    4. Bash 中的 Git
    5. Zsh 中的 Git
    6. Powershell 中的 Git
    7. 总结
  17. 将 Git 嵌入你的应用
    1. 命令行 Git 方式
    2. Libgit2
      1. 高级功能
      2. 其它绑定
      3. 扩展阅读
    3. JGit
      1. 起步
      2. 底层命令
      3. 高层命令
      4. 拓展阅读
  18. Git 命令
    1. 设置与配置
      1. git config
      2. git help
    2. 获取与创建项目
      1. git init
      2. git clone
    3. 快照基础
      1. git add
      2. git status
      3. git diff
      4. git difftool
      5. git commit
      6. git reset
      7. git rm
      8. git mv
      9. git clean
    4. 分支与合并
      1. git branch
      2. git checkout
      3. git merge
      4. git mergetool
      5. git log
      6. git stash
      7. git tag
    5. 项目分享与更新
      1. git fetch
      2. git pull
      3. git push
      4. git remote
      5. git archive
      6. git submodule
    6. 检查与比较
      1. git show
      2. git shortlog
      3. git describe
    7. 调试
      1. git bisect
      2. git blame
      3. git grep
    8. 补丁
      1. git cherry-pick
      2. git rebase
      3. git revert
    9. 邮件
      1. git apply
      2. git am
      3. git format-patch
      4. git imap-send
      5. git send-email
      6. git request-pull
    10. 外部系统
      1. git svn
      2. git fast-import
    11. 管理
      1. git gc
      2. git fsck
      3. git reflog
      4. git filter-branch
    12. 底层命令
  19. Index

  • Next
  • Previous