Skip to content

Git 常用命令速查表

这份速查表旨在帮助您快速回顾和查找 Git 的常用命令。掌握它们是高效协作和管理代码的基础。

分类命令常用选项 / 示例用途备注
I. 初始化与克隆git init在当前目录初始化一个新的 Git 仓库。开始一个新项目时使用。
git clone <URL>git clone https://github.com/user/repo.git从远程仓库克隆一份副本到本地。加入现有项目或获取开源项目代码时使用。
II. 查询与查看git status查看工作区、暂存区的状态,显示文件更改、暂存、未跟踪等信息。最常用的命令,用于了解当前仓库状态。
git diffgit diff比较工作区与暂存区差异(即未暂存的更改)。查看尚未 git add 的修改。
git diff --stagedgit diff --staged比较暂存区与最新提交的差异。查看已暂存但尚未 git commit 的更改。
git loggit log --oneline --graph --decorate查看提交历史。
--oneline: 简洁单行。
--graph: 图形化历史。
--decorate: 显示分支/标签。
强大的历史查看工具,帮助理解项目演进。
git branchgit branch -agit 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 --amendgit 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 mergegit 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简化后续推送操作,无需每次指定 remotebranch
git push --force / git push --force-with-leasegit 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创建一个新的提交来撤销指定提交所做的更改,保留历史记录。最安全的撤销已共享历史的方法,因为它不会改写历史,而是通过反向提交来抵消之前的修改。