--- title: "03-git命令分类整理" created: 2025-11-25 tags: - 项目 aliases: - git命令分类整理 --- # git命令分类整理 > [!info] 使用说明 > 本篇为 y总(AcWing)实操课的 git 命令整理,按使用场景分类。同一命令会在多个场景重复出现(如 `git status`、`git log`),是刻意的速查设计,便于在对应场景下直接翻到。概念不熟的先看 [[02-git基本概念|02-git基本概念]],动手流程见 [[04-git实操|04-git实操]]。正如 01 篇所说:**不要背命令,随用随查**。 ### 全局设置 | 命令 | 说明 | | --- | --- | | `git config --global user.name xxx` | 设置全局用户名,信息记录在 `~/.gitconfig` 文件中 | | `git config --global user.email xxx@xxx.com` | 设置全局邮箱地址,信息记录在 `~/.gitconfig` 文件中 | | `git init` | 将当前目录配置成 git 仓库,信息记录在隐藏的 `.git` 文件夹 | ### 常用命令 | 命令 | 说明 | | --- | --- | | `git add XX` | 将 XX 文件添加到暂存区 | | `git commit -m "给自己看的备注信息"` | 将暂存区的内容提交到当前分支 | | `git status` | 查看仓库状态 | | `git log` | 查看当前分支的所有版本 | | `git push -u` | 将当前分支推送到远程仓库(第一次需要 `-u`,以后不需要) | | `git clone git@git.acwing.com:xxx/XXX.git` | 将远程仓库 XXX 下载到当前目录下 | | `git branch` | 查看所有分支和当前所处分支 | ### 查看命令 | 命令 | 说明 | | --- | --- | | `git diff XX` | 查看 XX 文件相对于暂存区修改了哪些内容 | | `git status` | 查看仓库状态 | | `git log` | 查看当前分支的所有版本 | | `git log --pretty=oneline` | 用一行来显示 | | `git reflog` | 查看 HEAD 指针的移动历史(包括被回滚的版本) | | `git branch` | 查看所有分支和当前所处分支 | | `git pull` | 将远程仓库的当前分支与本地仓库的当前分支合并 | ### 删除命令 | 命令 | 说明 | | --- | --- | | `git rm --cached XX` | 将文件从仓库索引目录中删掉,不希望管理这个文件 | | `git restore --staged xx` | ==将 xx 从暂存区里移除== | | `git checkout -- XX` 或 `git restore XX` | ==将 XX 文件尚未加入暂存区的修改全部撤销== | ### 代码回滚 | 命令 | 说明 | | --- | --- | | `git reset --hard HEAD^` 或 `git reset --hard HEAD~` | 将代码库回滚到上一个版本 | | `git reset --hard HEAD^^` | 往上回滚两次,以此类推 | | `git reset --hard HEAD~100` | 往上回滚 100 个版本 | | `git reset --hard 版本号` | 回滚到某一特定版本 | ### 远程仓库 | 命令 | 说明 | | --- | --- | | `git remote add origin git@git.acwing.com:xxx/XXX.git` | 将本地仓库关联到远程仓库 | | `git push -u` | 将当前分支推送到远程仓库(第一次需要 `-u`,以后不需要) | | `git push origin branch_name` | 将本地的某个分支推送到远程仓库 | | `git clone git@git.acwing.com:xxx/XXX.git` | 将远程仓库 XXX 下载到当前目录下 | | `git push --set-upstream origin branch_name` | 设置本地的 branch_name 分支对应远程仓库的 branch_name 分支 | | `git push -d origin branch_name` | 删除远程仓库的 branch_name 分支 | | `git checkout -t origin/branch_name` | 将远程的 branch_name 分支拉取到本地 | | `git pull` | 将远程仓库的当前分支与本地仓库的当前分支合并 | | `git pull origin branch_name` | 将远程仓库的 branch_name 分支与本地仓库的当前分支合并 | | `git branch --set-upstream-to=origin/branch_name1 branch_name2` | 将远程的 branch_name1 分支与本地的 branch_name2 分支对应 | ### 分支命令 | 命令 | 说明 | | --- | --- | | `git branch branch_name` | 创建新分支 | | `git branch` | 查看所有分支和当前所处分支 | | `git checkout -b branch_name` | 创建并切换到 branch_name 这个分支 | | `git checkout branch_name` | 切换到 branch_name 这个分支 | | `git merge branch_name` | 将分支 branch_name 合并到当前分支上 | | `git branch -d branch_name` | 删除本地仓库的 branch_name 分支 | | `git push --set-upstream origin branch_name` | 设置本地的 branch_name 分支对应远程仓库的 branch_name 分支 | | `git push -d origin branch_name` | 删除远程仓库的 branch_name 分支 | | `git checkout -t origin/branch_name` | 将远程的 branch_name 分支拉取到本地 | | `git pull` | 将远程仓库的当前分支与本地仓库的当前分支合并 | | `git pull origin branch_name` | 将远程仓库的 branch_name 分支与本地仓库的当前分支合并 | | `git branch --set-upstream-to=origin/branch_name1 branch_name2` | 将远程的 branch_name1 分支与本地的 branch_name2 分支对应 | ### stash 暂存 | 命令 | 说明 | | --- | --- | | `git stash` | 将工作区和暂存区中尚未提交的修改存入栈中 | | `git stash apply` | 将栈顶存储的修改恢复到当前分支,但不删除栈顶元素 | | `git stash drop` | 删除栈顶存储的修改 | | `git stash pop` | 将栈顶存储的修改恢复到当前分支,同时删除栈顶元素 | | `git stash list` | 查看栈中所有元素 | ## 高危命令警示 以下命令不可逆或影响远程协作,使用前务必确认(尤其是回滚类,先 `git log` / `git reflog` 确认目标版本): | 命令 | 风险点 | | --- | --- | | `git reset --hard` | 丢弃目标版本之后的所有工作区改动,不可恢复(除非先入暂存/提交) | | `git push -d origin branch_name` | 直接删除远程分支,他人本地引用仍在但推送受阻 | | `git rm --cached XX` | 只是取消跟踪不删本地文件;若误用 `git rm` 则本地文件一并删除 | | `git stash drop` / `pop` | 弹出的 stash 不再保留,恢复错了要靠 `git stash list` 之外的恢复手段 | ## 命令学习路径 结合 01 篇的学习建议:**初学者先掌握「全局设置 → add / commit / push / pull → clone」这条最小闭环**(即"常用命令"节),其余分类随用随查即可;`stash`、`reset --hard`、分支协作留到 04-git实操 和 06-git与github项目管理篇 的实际场景中理解。 --- **项目分区导航**:[[02-git基本概念|git基本概念]] ⬅️ | 03-git命令分类整理 | ➡️ [[04-git实操|git实操]]