这是本节的多页打印视图。 .
Git
Git 常用命令、身份配置与仓库维护
Git 的日常命令、身份配置,以及仓库写坏之后的收拾办法。
1 - Git 常用命令速查
日常使用频率最高的 Git 命令速查表,涵盖基本操作、分支管理、查看历史、撤销与暂存、远程协作等场景。
本文基于 Git 2.46.0,日常使用中如有更多需求可查看
git help或官方文档。
基本操作
| 命令 | 说明 |
|---|---|
git init | 在当前目录初始化一个新的 Git 仓库 |
git clone <地址> | 克隆远程仓库到本地 |
git add . | 暂存所有修改过的文件 |
git add <文件> | 暂存指定文件 |
git commit -m "说明" | 提交暂存区的内容 |
git commit -am "说明" | 暂存所有已跟踪文件并提交(跳过 git add) |
git status | 查看当前工作区状态 |
分支管理
| 命令 | 说明 |
|---|---|
git branch | 列出本地分支(当前分支前有 *) |
git branch -a | 列出所有分支(含远程分支) |
git branch <名称> | 创建新分支 |
git branch -d <名称> | 删除已合并的分支 |
git branch -D <名称> | 强制删除分支(即使未合并) |
git switch <名称> | 切换到已有分支 |
git switch -c <名称> | 创建并切换到新分支 |
git merge <分支> | 将指定分支合并到当前分支 |
git rebase <分支> | 将当前分支变基到指定分支 |
查看历史
| 命令 | 说明 |
|---|---|
git log | 查看提交历史 |
git log --oneline | 单行显示提交历史 |
git log --oneline --graph | 以图形方式显示分支历史 |
git log -p | 显示每次提交的 diff |
git diff | 比较工作区和暂存区的差异 |
git diff --staged | 比较暂存区和上次提交的差异 |
git show | 查看最新提交的详细信息 |
git show <commit-id> | 查看指定提交的详细信息 |
撤销与暂存
| 命令 | 说明 |
|---|---|
git restore <文件> | 撤销工作区的修改(未暂存的文件) |
git restore --staged <文件> | 取消暂存(文件回到工作区) |
git reset --soft HEAD~1 | 撤销上次提交,保留修改 |
git reset --hard HEAD~1 | 撤销上次提交,丢弃修改(慎用) |
git stash | 暂存当前工作区的修改 |
git stash pop | 恢复最近一次暂存并删除它 |
git stash list | 查看暂存列表 |
远程协作
| 命令 | 说明 |
|---|---|
git remote -v | 查看远程仓库地址 |
git remote add origin <地址> | 添加远程仓库 |
git push origin <分支> | 推送代码到远程 |
git push -u origin <分支> | 首次推送并建立 upstream 关联 |
git pull | 拉取远程代码并合并 |
git fetch | 拉取远程代码但不合并 |
git clone <地址> | 克隆远程仓库 |
配置
| 命令 | 说明 |
|---|---|
git config --list | 查看当前所有配置 |
git config --global user.name "名称" | 设置全局用户名 |
git config --global user.email "邮箱" | 设置全局邮箱 |
git config user.name "名称" | 设置当前仓库的用户名 |
git config user.email "邮箱" | 设置当前仓库的邮箱 |
git config --global http.proxy <地址> | 设置 HTTP 代理 |
git config --global --unset http.proxy | 取消 HTTP 代理 |
其他
| 命令 | 说明 |
|---|---|
git tag | 列出所有标签 |
git tag <名称> | 创建轻量标签 |
git mv <旧文件> <新文件> | 重命名或移动文件 |
git rm <文件> | 从仓库中删除文件 |
git clean -df | 删除未跟踪的文件和目录 |
git help | 查看 Git 帮助信息 |
git -v | 查看 Git 版本 |
2 - Git 多仓库身份配置
在个人项目和公司项目中使用不同的 Git 用户名和邮箱提交,避免身份混淆。
工作电脑上同时有个人项目和公司项目时,如果不做配置,所有提交都会使用同一个用户名和邮箱。这篇文章教你如何让 Git 根据仓库自动切换身份。
配置优先级
Git 采用三层配置覆盖,优先级从低到高:
仓库级配置会覆盖全局级,所以只需要在个别仓库设置独立身份即可。
操作步骤
1. 设置全局默认身份
适用于大多数仓库(比如你的个人项目):
2. 设置单个仓库的独立身份
终端切换到需要单独设置的仓库目录,不加 --global:
这条命令会写入当前仓库的 .git/config,只影响这个仓库。
3. 验证当前仓库身份
手动编辑配置
也可以直接打开仓库下的 .git/config 文件,找到或添加:
常见场景
| 场景 | 全局身份 | 仓库级身份 |
|---|---|---|
| 个人 GitHub 项目 + 公司 GitLab 项目 | 个人邮箱 | 公司邮箱 |
| 开源项目 + 内部项目 | 个人昵称 | 公司实名 |
| 多个账号的 GitHub | 主账号 | 副账号 |
3 - Git 清理远端仓库全部提交历史
删除 Git 仓库全部提交历史但保留仓库本身,适用于清理隐私信息或给仓库瘦身。
注意
此操作不可逆,会永久删除仓库的所有提交历史,请提前做好备份。
背景
当提交记录中包含隐私信息(如密钥、密码),或仓库因上传大量文件导致体积过大、拉取频繁出错时,可以通过清除全部提交历史来"瘦身"仓库,同时保留仓库本身(Star、Issues 等不受影响)。
以下两种方法均以 main 分支为例,操作前请先将仓库克隆到本地。
方法一:创建空白分支替换
通过 --orphan 创建一个没有历史的新分支,替换掉原来的 main:
方法二:删除 .git 重新初始化
直接删除本地的 Git 历史,重新初始化一个全新的仓库:
两种方法的区别
- 方法一保留了本地 Git 配置(如 remote、branch tracking),操作更简单
- 方法二完全重置仓库,但需要手动填写远程仓库地址,且会丢失所有本地 Git 配置