先看看下面这张从《图解git》上借鉴而来的图:
这张图描述了git reset、checkout、add、commit的基本用法。但在实际应用过程中,git reset和git checkout可以根据参数的不同而实现更强大的功能。下面就来梳理一下它们在带不同参数时的具体作用。
功能 | 命令 | 影响范围 | 命令效果 |
检出分支 | git checkout <branch | commit> | HEAD自身、索引区、工作目录 | 将某个分支或提交检出到索引区和工作目录 |
检出文件 | git checkout <file> | 工作目录 | 将索引区的文件检出到工作目录 |
git checkout <commit> <file> | 索引区、工作目录 | 将某个提交的文件检出到索引区和工作目录 | |
重置当前分支所指向的提交对象 | git reset --soft <branch | commit> | HEAD指向的分支引用 | 将HEAD重置为某个分支或某个提交 |
git reset <branch | commit> | HEAD指向的分支引用、索引区 | 将HEAD、索引区重置为某个分支或某个提交 | |
git reset --hard <branch | commit> | HEAD指向的分支引用、索引区、工作目录 | 将HEAD、索引区、工作目录重置为某个分支或某个提交 | |
重置当前分支所指向的提交对象的某个文件 | git reset <file> | 索引区 | 将索引区的某个文件重置为HEAD中对应的文件 |
git reset <branch | commit> <file> | 索引区 | 将索引区的某个文件重置为某个分支或提交的对应文件 |