Git 常用命令速查表
这份速查表旨在帮助您快速回顾和查找 Git 的常用命令。掌握它们是高效协作和管理代码的基础。
分类 | 命令 | 常用选项 / 示例 | 用途 | 备注 |
---|---|---|---|---|
I. 初始化与克隆 | git init | 在当前目录初始化一个新的 Git 仓库。 | 开始一个新项目时使用。 | |
git clone <URL> | git clone https://github.com/user/repo.git | 从远程仓库克隆一份副本到本地。 | 加入现有项目或获取开源项目代码时使用。 | |
II. 查询与查看 | git status | 查看工作区、暂存区的状态,显示文件更改、暂存、未跟踪等信息。 | 最常用的命令,用于了解当前仓库状态。 | |
git diff | git diff | 比较工作区与暂存区差异(即未暂存的更改)。 | 查看尚未 git add 的修改。 | |
git diff --staged | git diff --staged | 比较暂存区与最新提交的差异。 | 查看已暂存但尚未 git commit 的更改。 | |
git log | git log --oneline --graph --decorate | 查看提交历史。 • --oneline : 简洁单行。• --graph : 图形化历史。• --decorate : 显示分支/标签。 | 强大的历史查看工具,帮助理解项目演进。 | |
git branch | git branch -a | • git branch : 列出本地分支。• -r : 列出远程分支。• -a : 列出所有本地和远程分支。 | 用于查看分支信息。 | |
git reflog | 查看本地仓库 HEAD 和其他引用的移动历史。 | 极度重要的“时光机”,用于恢复误操作,如误删分支、误 reset 等。 | ||
git show <commit-id> | git show HEAD / git show abcdefg | 显示某个提交的详细信息(提交信息、作者、日期和内容差异)。 | 用于查看特定提交的具体内容。 | |
III. 添加与提交 | git add <file(s)> | git add . / git add index.js | 将文件更改添加到暂存区(Staging Area)。 | git add . 常用,用于添加所有已修改和新增的文件。 |
git commit -m "Message" | git commit -m "feat: Add user login" | 将暂存区的更改提交到本地仓库,创建一个新的提交。 | 核心提交命令,将工作区快照保存到版本历史。 | |
git commit --amend | git commit --amend | 修改上一次提交(可修改提交信息或增补文件)。 | 注意: 不建议在已推送的提交上使用,因为它会改写历史。 | |
IV. 分支管理 | git checkout <branch-name> | git checkout dev | 切换到指定分支。 | 较老版本 Git 常用 的切换分支命令。 |
git checkout -b <new-branch-name> | git checkout -b feature/auth | 创建并切换到新分支。 | 快速创建新分支并开始工作。 | |
git switch <branch-name> | git switch main | (Git 2.23+) 切换到指定分支。 | 推荐替代 git checkout 的切换分支功能,语义更清晰。 | |
git switch -c <new-branch-name> | git switch -c hotfix/bug-fix | (Git 2.23+) 创建并切换到新分支。 | 推荐替代 git checkout -b 。 | |
git merge <branch-to-merge> | git merge feature/X | 将指定分支的更改合并到当前分支。 | 最常见的合并方式,通常会创建一个新的合并提交(Merge Commit),除非是快进合并(Fast-Forward)。 | |
git rebase <base-branch> | git rebase main | 将当前分支的提交重放到另一分支的最新提交之后。 | 保持线性的提交历史,避免多余的合并提交。 非常重要: 不要对已推送的公共分支使用 git rebase ,因为它会改写历史,可能导致团队协作问题。 | |
git branch -d <branch-name> | git branch -d old-feature | 删除已合并的本地分支。 | 清理不再使用的本地分支。 | |
git branch -D <branch-name> | git branch -D temp-branch | 强制删除本地分支(即使该分支的更改尚未合并)。 | 慎用! 会丢失未合并的工作。 | |
V. 远程操作 | git remote -v | 列出所有远程仓库的短名称及其 URL。 | 查看远程仓库配置。 | |
git fetch <remote> | git fetch origin | 从远程仓库下载最新信息(提交、分支),但不自动合并到本地分支。 | 仅更新本地的远程跟踪分支(如 origin/main ),不改变工作区或本地分支内容。 | |
git pull <remote> <branch> | git pull origin main | 从远程仓库拉取并集成最新更改(相当于 git fetch 后跟 git merge 或 git rebase )。 | 获取最新代码并同步到本地。默认行为通常是 merge ,可通过配置改为 rebase 。 | |
git push <remote> <branch> | git push origin main | 将本地分支的提交推送到远程仓库。 | 将本地工作分享给团队。 | |
git push -u <remote> <branch> | git push -u origin feature/new | 首次推送新分支时,设置上游(upstream)跟踪分支,之后可直接使用 git push 。 | 简化后续推送操作,无需每次指定 remote 和 branch 。 | |
git push --force / git push --force-with-lease | git push --force origin hotfix | 强制推送,覆盖远程历史。 | 极度危险,仅在明确知晓后果且必要时使用。 会覆盖远程分支历史。--force-with-lease 更安全,它会检查远程分支是否在本地更新后被他人改动过,避免覆盖他人的新提交。 | |
VI. 撤销操作 | git restore <file-path> | git restore index.html | (Git 2.23+) 恢复工作区中文件的更改,使其与暂存区或最新提交的状态一致。 | 推荐替代 git checkout -- <file> 。 |
git restore --staged <file-path> | git restore --staged README.md | (Git 2.23+) 将文件从暂存区中取消暂存,但保留工作区的更改。 | 推荐替代 git reset HEAD <file> 。 | |
git reset [options] [commit-id] | git reset --soft HEAD~1 | 移动 HEAD 指针,并可选地重置暂存区和工作区,用于撤销本地提交。 | • --soft : 移动 HEAD ,保留暂存区和工作区。• --mixed (默认): 移动 HEAD ,清空暂存区,保留工作区。• --hard : 移动 HEAD ,清空暂存区,丢弃工作区所有更改。 慎用! 不建议对已推送的提交使用。 | |
git revert <commit-id> | git revert abcdefg | 创建一个新的提交来撤销指定提交所做的更改,保留历史记录。 | 最安全的撤销已共享历史的方法,因为它不会改写历史,而是通过反向提交来抵消之前的修改。 |