基础知识

GitBook

目录

  1. 创建工作环境git init

  2. 直接操纵对象git commit

  3. 直接操纵引用git branch

  4. 直接操纵索引git add / restore

  5. 直接操纵HEADgit switch

  6. 直接操纵远程git pull / push

  7. 直接操纵mergegit diff / merge

  8. 直接操纵commitgit rebase

  9. 检索与查看历史git log / blame / grep

  10. 邪恶的submodulegit submodule

  11. 配置和aliasgit config

  12. 数据的导入和导出git archive

本教程还提供了cheatsheet,可以用来复习并检查学习效果。

如果你完全没有听说过cheatsheet里面的任何一条命令,那么你可能需要先学习一些基础教程:入门初级高级。其中高级可以跟本教程同时学习。

如果你已经完全掌握cheatsheet里面的所有命令,那么此教程可能对你来说太过浅显,建议移步Git ReferenceGit源码

学习完本教程以后,你应该掌握了git的全部用法的1%。

备注:git reset/git checkout的详解在第4章。强烈推荐改用功能更强大更直观的git restoregit switch

基本约定

为了更为本质地了解Git,本文会对同一种操作介绍多种不同的实现方法。 下表描述了不同使用场景下应该如何选择最适合的实现方法。

Git命令行基础

全局命令行参数

  • cwd默认为.,表示先cd到那里再运行后续命令

  • work-tree默认为GIT_WORK_TREE或者.,但并非所有命令都涉及worktree

  • git-dir默认为GIT_DIR或者./.git

    • 若./.git是目录,则就以该目录为repo

    • 若./.git是文件,则以该文件内容(一般会是绝对路径)为repo

git [-C <cwd>] [--git-dir=<repo>] [--work-tree=<worktree>] <command> [args]

具体Git命令的参数

大部分命令的参数列表遵循以下格式:

  • object是对象的表达式

    • 一般由引用、对象SHA1、^、~、:等构成

    • 完整列表参见git rev-parse(Lv2)

  • path是路径

  • --在不引起歧义的情况下可以省略

注意:是否存在<path>参数可能对语义有本质的影响

git <command> [options] [<object>]
git <command> [options] [<object>] -- [<path>]

Git命令列表

本教程涵盖所有的Git常用命令和一半以上的Git非常用命令, 参见Roadmap

License

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

最后更新于