基础命令
| 命令 | 说明 |
|---|---|
git init <directory> |
在指定目录下创建一个空的 Git 仓库。不带参数将在当前目录初始化仓库。 |
git clone <repo> |
克隆指定仓库到本地。<repo> 可以是本地路径、HTTP 或 SSH 地址。 |
git config user.name <name> |
为当前仓库设置用户名。使用 --global 设置全局用户名。 |
git add <directory> |
将指定目录的所有更改加入暂存区。替换为 <file> 可添加单个文件。 |
git commit -m "<message>" |
提交暂存区内容,并使用指定信息作为提交消息。 |
git status |
显示哪些文件已暂存、未暂存或未跟踪。 |
git log |
显示完整的提交历史(默认格式)。 |
Git diff
| 命令 | 说明 |
|---|---|
git diff |
显示工作区与暂存区之间的差异。 |
git diff HEAD |
显示工作区与上一次提交之间的差异。 |
git diff --cached |
显示暂存区与上一次提交之间的差异。 |
撤销
| 命令 | 说明 |
|---|---|
git revert <commit> |
创建一个新提交,撤销 <commit> 中的所有更改,并应用到当前分支。 |
git reset <file> |
将 <file> 从暂存区移除,但保留工作区内容不变。 |
Rewriting Git History
| 命令 | 说明 |
|---|---|
git commit --amend -m "<message>" |
将当前暂存区更改合并到最近一次提交中(替换原提交)。 |
git rebase <base> |
将当前分支基于 <base> 重新变基。<base> 可为提交 ID、分支名、标签或相对引用。 |
git reflog |
显示本地仓库 HEAD 的变更日志。 |
分支相关
| 命令 | 说明 |
|---|---|
git branch |
列出本地所有分支。 |
git switch -c <branch> |
创建并切换到名为 <branch> 的新分支。省略 -c 则切换到已有分支。 |
git merge <branch> |
将 <branch> 合并到当前分支。 |
远程
| 命令 | 说明 |
|---|---|
git remote add <name> <url> |
添加一个远程仓库连接,之后可用 <name> 代替 <url>。 |
git fetch <remote> <branch> |
从远程仓库拉取指定分支的提交。省略 <branch> 拉取所有分支。 |
git pull <remote> |
从远程拉取当前分支并立即合并到本地。 |
git push <remote> <branch> |
将本地 <branch> 推送到 <remote>。若远程无此分支则自动创建。 |
配置
| 命令 | 说明 |
|---|---|
git config --global user.name <name> |
为当前用户设置全局提交用户名。 |
git config --global user.email <email> |
为当前用户设置全局提交邮箱。 |
git config --global alias.<alias-name> <git-command> |
创建 Git 命令别名。例如:alias.glog "log --graph --oneline"。 |
git config --system core.editor <editor> |
设置系统级文本编辑器(如 vi)。 |
git config --global --edit |
打开并编辑当前用户的全局配置文件。 |
日志
| 命令 | 说明 |
|---|---|
git log -<limit> |
限制显示提交数量,如 git log -5。 |
git log --oneline |
每行显示一条提交记录。 |
git log --author="<pattern>" |
按作者筛选提交。 |
git log --grep="<pattern>" |
按提交信息内容筛选提交。 |
git log <since>..<until> |
显示指定范围内的提交(可为提交 ID、分支、HEAD 等)。 |
git log -- <file> |
仅显示修改过指定文件的提交。 |
git log --graph |
以文本图形方式显示分支结构。 |
Git Reset
| 命令 | 说明 |
|---|---|
git reset |
清空暂存区,但保留工作区内容。 |
git reset --hard |
清空暂存区并丢弃工作区所有未提交更改。 |
git reset <commit> |
将当前分支回退到指定提交,清空暂存区,保留工作区。 |
git reset --hard <commit> |
回退到指定提交,并清空暂存区和工作区(危险操作)。 |
Git Rebase
| 命令 | 说明 |
|---|---|
git rebase -i <base> |
交互式变基当前分支到 <base>,允许编辑每个提交。 |
Git Pull
| 命令 | 说明 |
|---|---|
git pull --rebase <remote> |
拉取远程分支并以 rebase 方式合并(而非 merge)。 |
Git Push
| 命令 | 说明 |
|---|---|
git push <remote> --force |
强制推送(可能导致非快进合并,慎用!)。 |
git push <remote> --tags |
推送所有本地标签到远程仓库(普通 push 不包含标签)。 |