Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/b1f6c1c4/learn-git-the-super-hard-way
不走寻常路的Git教程
https://github.com/b1f6c1c4/learn-git-the-super-hard-way
git git-tutorial git-workflow git-workspace learning-git
Last synced: 6 days ago
JSON representation
不走寻常路的Git教程
- Host: GitHub
- URL: https://github.com/b1f6c1c4/learn-git-the-super-hard-way
- Owner: b1f6c1c4
- License: other
- Created: 2018-05-24T15:15:57.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-12-27T22:11:10.000Z (almost 4 years ago)
- Last Synced: 2024-08-01T17:36:57.001Z (3 months ago)
- Topics: git, git-tutorial, git-workflow, git-workspace, learning-git
- Homepage:
- Size: 360 KB
- Stars: 475
- Watchers: 7
- Forks: 24
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# learn-git-the-super-hard-way
[GitBook](https://app.gitbook.com/@b1f6c1c4/s/learn-git-the-super-hard-way/)
## 目录
0. [创建工作环境](chapter0.md)(`git init`)
1. [直接操纵对象](chapter1.md)(`git commit`)
2. [直接操纵引用](chapter2.md)(`git branch`)
3. [直接操纵索引](chapter3.md)(`git add / restore`)
4. [直接操纵HEAD](chapter4.md)(`git switch`)
5. [直接操纵远程](chapter5.md)(`git pull / push`)
6. [直接操纵merge](chapter6.md)(`git diff / merge`)
7. [直接操纵commit](chapter7.md)(`git rebase`)
8. [检索与查看历史](chapter8.md)(`git log / blame / grep`)
9. [邪恶的submodule](chapter9.md)(`git submodule`)
10. [批处理与自动化](chapter10.md)
11. [配置和alias](chapter11.md)(`git config`)
12. [单repo多分支工作流](chapter12.md)
13. [GPG签名](chapter13.md)
14. [数据的导入和导出](chapter14.md)(`git archive`)
15. [数据抢修与急救](chapter15.md)**本教程还提供了[cheatsheet](cheatsheet.md)**,可以用来复习并检查学习效果。
如果你完全没有听说过cheatsheet里面的任何一条命令,那么你可能需要先学习一些基础教程:[入门](https://try.github.io)、[初级](https://learngitbranching.js.org)、[高级](https://git-scm.com/book/en/v2)。其中高级可以跟本教程同时学习。
如果你已经完全掌握cheatsheet里面的所有命令,那么此教程可能对你来说太过浅显,建议移步[Git Reference](https://git-scm.com/docs)、[Git源码](https://github.com/git/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`或者`.`,但并非所有命令都涉及worktree
- git-dir默认为`GIT_DIR`或者`./.git`:
- 若./.git是目录,则就以该目录为repo
- 若./.git是文件,则以该文件内容(一般会是绝对路径)为repo```bash
git [-C ] [--git-dir=] [--work-tree=] [args]
```### 具体Git命令的参数
大部分命令的参数列表遵循以下格式:
- object是对象的表达式
- 一般由引用、对象SHA1、^、~、:等构成
- 完整列表参见`git rev-parse`(Lv2)
- path是路径
- `--`在不引起歧义的情况下可以省略注意:是否存在``参数可能对语义有本质的影响
```bash
git [options] []
git [options] [] -- []
```## Git命令列表
本教程涵盖所有的Git常用命令和一半以上的Git非常用命令,
参见[Roadmap](ROADMAP.md)## License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.