基础知识
目录
创建工作环境(
git init)直接操纵对象(
git commit)直接操纵引用(
git branch)直接操纵索引(
git add / restore)直接操纵HEAD(
git switch)直接操纵远程(
git pull / push)直接操纵merge(
git diff / merge)直接操纵commit(
git rebase)检索与查看历史(
git log / blame / grep)邪恶的submodule(
git submodule)配置和alias(
git config)数据的导入和导出(
git archive)
本教程还提供了cheatsheet,可以用来复习并检查学习效果。
如果你完全没有听说过cheatsheet里面的任何一条命令,那么你可能需要先学习一些基础教程:入门、初级、高级。其中高级可以跟本教程同时学习。
如果你已经完全掌握cheatsheet里面的所有命令,那么此教程可能对你来说太过浅显,建议移步Git Reference、Git源码。
学习完本教程以后,你应该掌握了git的全部用法的1%。
备注:git reset/git checkout的详解在第4章。强烈推荐改用功能更强大更直观的git restore和git switch。
基本约定
为了更为本质地了解Git,本文会对同一种操作介绍多种不同的实现方法。 下表描述了不同使用场景下应该如何选择最适合的实现方法。
等级
含义
使用场景
Lv0
纯粹手工实现,完全不使用Git命令行
学习Git内部结构时
Lv1
使用底层Git命令行配合手工实现
实现极为特殊的Git操作时
Lv2
使用底层Git命令行实现
实现非常规Git操作时
Lv3
使用常规Git命令行实现
日常使用
Lv4
Git Alias
对Git进行扩展,日常使用
Lv5
编写脚本调用Git命令行
对Git进行非常规扩展,偶尔使用
Git命令行基础
全局命令行参数
cwd默认为.,表示先cd到那里再运行后续命令
work-tree默认为
GIT_WORK_TREE或者.,但并非所有命令都涉及worktreegit-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.
最后更新于
这有帮助吗?