这里为你整理了一份非常全面的 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 忽略的文件/文件夹模式 |
常用工作流示例
场景一:日常提交代码
bash
git status # 1. 查看改了哪些文件
git add . # 2. 将所有变更加入暂存区
git commit -m "功能完成" # 3. 提交到本地仓库
git pull origin main # 4. 先拉取远程最新代码(解决潜在冲突)
git push origin main # 5. 推送到远程仓库
场景二:创建新功能分支
bash
git switch -c feature/xxx # 1. 从当前分支创建并切换到功能分支
# ... 进行开发,多次 add & commit ...
git push -u origin feature/xxx # 2. 推送功能分支到远程
# 开发完成后,在代码托管平台(如GitHub)创建Pull Request合并
希望这份大全能帮助你更好地使用 Git!建议先熟练掌握基本操作,再逐步尝试高级功能。