这里为你整理了一份非常全面的 Git 常用命令大全,从入门到进阶,涵盖了日常开发的绝大多数场景。命令都附有简洁的说明,方便你快速查阅和使用。
Git 命令分类速览
- 仓库初始化与配置
- 日常基本操作
- 分支管理
- 查看状态与历史
- 撤销与回退
- 远程仓库协作
- 标签管理
- 高级技巧
1. 仓库初始化与配置
| 命令 | 说明 |
|---|
git init | 在当前目录初始化一个新的 Git 仓库 |
git clone <url> | 克隆一个远程仓库到本地 |
git config --global user.name "你的名字" | (重要) 设置全局用户名 |
git config --global user.email "你的邮箱" | (重要) 设置全局邮箱地址 |
git config --list | 查看当前所有 Git 配置 |
2. 日常基本操作
| 命令 | 说明 |
|---|
git status | 查看工作区和暂存区的状态(非常常用) |
git add <文件名> | 将指定文件的修改添加到暂存区 |
git add . 或 git add -A | 将所有新增、修改、删除的文件变更都添加到暂存区 |
git commit -m "提交信息" | 将暂存区的内容提交到本地仓库,并附上提交说明 |
git commit -am "提交信息" | 相当于 git add . + git commit -m,仅对已跟踪的文件有效 |
git diff | 查看工作区与暂存区的差异 |
git diff --staged | 查看暂存区与本地仓库最新版本的差异 |
git restore <文件名> | (Git 2.23+) 撤销工作区的修改,恢复到暂存区或仓库的版本 |
git restore --staged <文件名> | (Git 2.23+) 将文件从暂存区撤出,但保留工作区的修改 |
注意:在老版本 Git 中,撤销修改常用 git checkout -- <文件名> 和 git reset HEAD <文件名>,新版本推荐使用 git restore。
3. 分支管理
| 命令 | 说明 |
|---|
git branch | 查看所有本地分支(当前分支前有 * 号) |
git branch -r | 查看所有远程分支 |
git branch -a | 查看所有本地和远程分支 |
git branch <分支名> | 创建一个新分支 |
git checkout <分支名> | 切换到指定分支 |
git switch <分支名> | (Git 2.23+) 专门用于切换分支的命令,更语义化 |
git checkout -b <分支名> | 创建并切换到新分支(经典组合技) |
git switch -c <分支名> | (Git 2.23+) 创建并切换到新分支 |
git merge <分支名> | 将指定分支合并到当前分支 |
git branch -d <分支名> | 删除一个已合并的分支 |
git branch -D <分支名> | 强制删除一个分支(即使它未合并) |
4. 查看状态与历史
| 命令 | 说明 |
|---|
git log | 查看提交历史 |
git log --oneline | 以简洁的单行模式查看历史 |
git log --graph | 以图形化方式查看分支合并历史 |
git show <commit_id> | 查看某一次提交的具体内容变更 |
git status | 再次强调,查看当前工作区状态的首选命令 |
5. 撤销与回退
| 命令 | 说明 | 风险 |
|---|
git commit --amend | 修改最新一次提交的提交信息或追加文件变更 | 仅限本地未推送的提交 |
git reset --soft <commit_id> | 回退到某个版本,保留工作区和暂存区的内容 | 中 |
git reset --mixed <commit_id> | (默认) 回退到某个版本,保留工作区,清空暂存区 | 中 |
git reset --hard <commit_id> | (危险) 彻底回退到某个版本,工作区和暂存区都重置 | 高 |
git revert <commit_id> | 创建一个新的提交来“撤销”某次提交的更改。推荐用于已推送的提交 | 低 |
黄金法则:对已经推送到远程仓库的提交,尽量使用 git revert;对仅本地的提交,可以使用 git reset。
6. 远程仓库协作
| 命令 | 说明 |
|---|
git remote -v | 查看远程仓库地址(verbose) |
git remote add <remote_name> <url> | 添加一个新的远程仓库,通常默认名为 origin |
git fetch <remote_name> | 从远程仓库获取最新信息到本地,但不自动合并 |
git pull <remote_name> <分支名> | 相当于 git fetch + git merge,拉取并合并到当前分支 |
git pull --rebase <remote_name> <分支名> | 拉取并使用变基方式合并,可以使历史线更清晰 |
git push <remote_name> <分支名> | 将本地分支推送到远程仓库 |
git push -u <remote_name> <分支名> | (重要) 首次推送时,建立本地分支与远程分支的跟踪关系 |
git push | 建立跟踪关系后,简化推送命令 |
git branch --set-upstream-to=<remote_name>/<分支名> | 手动建立本地分支与远程分支的跟踪关系 |
7. 标签管理
| 命令 | 说明 |
|---|
git tag | 查看所有标签 |
git tag <标签名> | 在当前提交上创建一个轻量标签 |
git tag -a <标签名> -m "备注信息" | 创建一个带备注的附注标签 |
git push <remote_name> <标签名> | 推送一个标签到远程仓库 |
git push <remote_name> --tags | 推送所有本地标签到远程仓库 |
8. 高级技巧
| 命令 | 说明 |
|---|
git stash | 将当前工作区和暂存区的修改临时“储藏”起来 |
git stash pop | 恢复最近一次储藏的内容,并删除储藏记录 |
git stash list | 查看所有的储藏记录 |
git rebase <分支名> | 将当前分支变基到目标分支(常用于整理提交历史) |
.gitignore | (不是命令) 创建一个文件,列出希望 Git 忽略的文件/文件夹模式 |
常用工作流示例
场景一:日常提交代码
git status
git add .
git commit -m "功能完成"
git pull origin main
git push origin main
场景二:创建新功能分支
git switch -c feature/xxx
git push -u origin feature/xxx
希望这份大全能帮助你更好地使用 Git!建议先熟练掌握基本操作,再逐步尝试高级功能。