跳转到主要内容

这是本节的多页打印视图。 .

返回本页常规视图.

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. 设置全局默认身份

适用于大多数仓库(比如你的个人项目):

git config --global user.name "your-name"
git config --global user.email "your@email.com"

2. 设置单个仓库的独立身份

终端切换到需要单独设置的仓库目录,不加 --global:

cd /path/to/company-project
git config user.name "work-name"
git config user.email "work@company.com"

这条命令会写入当前仓库的 .git/config,只影响这个仓库。

3. 验证当前仓库身份

git config user.name
git config user.email

手动编辑配置

也可以直接打开仓库下的 .git/config 文件,找到或添加:

[user]
    name = work-name
    email = work@company.com

常见场景

场景全局身份仓库级身份
个人 GitHub 项目 + 公司 GitLab 项目个人邮箱公司邮箱
开源项目 + 内部项目个人昵称公司实名
多个账号的 GitHub主账号副账号

3 - Git 清理远端仓库全部提交历史

删除 Git 仓库全部提交历史但保留仓库本身,适用于清理隐私信息或给仓库瘦身。
注意

此操作不可逆,会永久删除仓库的所有提交历史,请提前做好备份。

背景

当提交记录中包含隐私信息(如密钥、密码),或仓库因上传大量文件导致体积过大、拉取频繁出错时,可以通过清除全部提交历史来"瘦身"仓库,同时保留仓库本身(Star、Issues 等不受影响)。

以下两种方法均以 main 分支为例,操作前请先将仓库克隆到本地。

方法一:创建空白分支替换

通过 --orphan 创建一个没有历史的新分支,替换掉原来的 main:

git checkout --orphan latest_branch  # 创建一个没有历史的新分支
git add -A  # 暂存所有文件
git commit -m "Initial commit"  # 创建初始提交
git branch -D main  # 删除本地的 main 分支
git branch -m main  # 将当前分支重命名为 main
git push -f origin main  # 强制推送到远程仓库,替换远程 main 分支

方法二:删除 .git 重新初始化

直接删除本地的 Git 历史,重新初始化一个全新的仓库:

rm -rf .git  # 删除本地 Git 仓库目录
git init  # 重新初始化一个新的 Git 仓库
git add -A  # 暂存所有文件
git commit -m "Initial commit"  # 创建初始提交
git push -f https://github.com/username/repo.git main  # 强制推送到远程仓库(需替换为实际仓库地址)
两种方法的区别
  • 方法一保留了本地 Git 配置(如 remote、branch tracking),操作更简单
  • 方法二完全重置仓库,但需要手动填写远程仓库地址,且会丢失所有本地 Git 配置

参考资料