Skip to content

Git 命令速查表

这是 Git 版本控制的常用命令参考,专为 Obsidian Git 插件用户优化。

📋 目录

基础配置

用户信息配置

bash
# 设置用户名
git config --global user.name "你的名字"

# 设置邮箱
git config --global user.email "your.email@example.com"

# 查看配置信息
git config --list

# 查看特定配置
git config user.name

编辑器配置

bash
# 设置默认编辑器为 VS Code
git config --global core.editor "code --wait"

# 设置默认编辑器为 Vim
git config --global core.editor "vim"

快捷命令配置

bash
# 设置命令别名
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.lg "log --oneline --graph --all"

行尾符配置

bash
# Windows
git config --global core.autocrlf true

# macOS/Linux
git config --global core.autocrlf input

仓库操作

初始化仓库

bash
# 在当前目录初始化
git init

# 创建新目录并初始化
git init 项目名

克隆仓库

bash
# 克隆远程仓库
git clone <仓库地>

# 克隆到指定目录
git clone <仓库地> <目录>

# 克隆指定分支
git clone -b <分支> <仓库地>

# 浅克隆(只克隆最近一次提交)
git clone --depth 1 <仓库地>

文件操作

查看状态

bash
# 查看工作区状态
git status

# 简洁模式
git status -s

# 查看被忽略的文件
git status --ignored

添加文件到暂存区

bash
# 添加单个文件
git add <文件>

# 添加多个文件
git add <文件1> <文件2>

# 添加所有文件
git add .
git add --all

# 添加所有 .md 文件
git add "*.md"

# 交互式添加
git add -p

删除文件

bash
# 删除文件(工作区和暂存区)
git rm <文件>

# 只删除暂存区的文件
git rm --cached <文件>

# 递归删除文件夹
git rm -r <文件夹>

# 删除所有 .log 文件
git rm "*.log"

移动/重命名文件

bash
# 重命名文件
git mv <旧文件> <新文件>

# 移动文件
git mv <文件> <目标目>/

.gitignore 配置

bash
# 创建 .gitignore 文件
touch .gitignore

常用忽略规则:

gitignore
# 忽略所有 .log 文件
*.log

# 忽略特定目录
node_modules/
.obsidian/workspace

# 忽略所有 .md 文件但保留 README.md
*.md
!README.md

# 忽略特定文件
.env
secrets.md

# Obsidian 特定忽略
.obsidian/workspace
.obsidian/workspace-mobile.json
.trash/

提交管理

提交更改

bash
# 提交暂存区的更改
git commit -m "提交说明"

# 提交并添加详细说明
git commit -m "简短说明" -m "详细说明"

# 跳过暂存区直接提交
git commit -a -m "提交说明"

# 修改上一次提交
git commit --amend -m "新的提交说明"

# 修改上一次提交(不修改说明)
git commit --amend --no-edit

查看提交历史

bash
# 查看提交历史
git log

# 单行显示
git log --oneline

# 图形化显示
git log --graph --oneline --all

# 显示最近 N 次提交
git log -n 5

# 显示文件变更统计
git log --stat

# 显示文件内容差异
git log -p

# 按日期筛选
git log --since="2024-01-01"
git log --until="2024-12-31"
git log --after="1 week ago"

# 按作者筛选
git log --author="作者名"

# 按提交信息筛选
git log --grep="关键词"

# 自定义格式
git log --pretty=format:"%h - %an, %ar : %s"

查看差异

bash
# 查看工作区和暂存区的差异
git diff

# 查看暂存区和最新提交的差异
git diff --staged
git diff --cached

# 查看两个提交之间的差异
git diff <提交1> <提交2>

# 查看特定文件的差异
git diff <文件>

# 查看分支之间的差异
git diff <分支1> <分支2>

# 仅显示文件名
git diff --name-only

# 显示统计信息
git diff --stat

分支管理

创建分支

bash
# 创建新分支
git branch <分支>

# 创建并切换到新分支
git checkout -b <分支>

# 从指定提交创建分支
git branch <分支> <提交哈>

# 从远程分支创建本地分支
git checkout -b <本地分支> origin/<远程分支>

切换分支

bash
# 切换到已有分支
git checkout <分支>

# 切换到上一个分支
git checkout -

# 使用 switch 命令切换(Git 2.23+)
git switch <分支>

# 创建并切换
git switch -c <分支>

查看分支

bash
# 查看本地分支
git branch

# 查看所有分支(本地+远程)
git branch -a

# 查看远程分支
git branch -r

# 查看分支及其最后一次提交
git branch -v

# 查看已合并到当前分支的分支
git branch --merged

# 查看未合并到当前分支的分支
git branch --no-merged

删除分支

bash
# 删除已合并的分支
git branch -d <分支>

# 强制删除分支
git branch -D <分支>

# 删除远程分支
git push origin --delete <分支>

合并分支

bash
# 合并指定分支到当前分支
git merge <分支>

# 不使用快进模式合并
git merge --no-ff <分支>

# 合并时压缩提交
git merge --squash <分支>

# 中止合并
git merge --abort

变基操作

bash
# 变基到主分支
git rebase <主分支>

# 交互式变基
git rebase -i <基准提>

# 中止变基
git rebase --abort

# 继续变基
git rebase --continue

# 跳过当前提交
git rebase --skip

远程仓库

查看远程仓库

bash
# 查看远程仓库信息
git remote

# 查看详细信息
git remote -v

# 查看特定远程仓库信息
git remote show origin

添加远程仓库

bash
# 添加远程仓库
git remote add origin <仓库地>

# 添加第二个远程仓库
git remote add upstream <仓库地>

推送到远程

bash
# 推送到远程仓库
git push origin <分支>

# 推送并设置上游分支
git push -u origin <分支>

# 推送所有分支
git push --all origin

# 强制推送(危险操作)
git push -f origin <分支>

# 推送标签
git push origin --tags

从远程拉取

bash
# 拉取并合并
git pull origin <分支>

# 拉取并变基
git pull --rebase origin <分支>

# 获取远程信息但不合并
git fetch origin

# 获取所有远程分支
git fetch --all

同步 Fork 仓库

bash
# 添加上游仓库
git remote add upstream <原仓库地>

# 获取上游更新
git fetch upstream

# 合并到本地
git merge upstream/main

# 推送到自己的仓库
git push origin main

撤销与回退

撤销工作区修改

bash
# 撤销单个文件的修改
git checkout -- <文件>

# 使用 restore 命令(Git 2.23+)
git restore <文件>

# 撤销所有文件的修改
git checkout -- .

# 撤销特定目录的修改
git checkout -- <目录>/

撤销暂存区

bash
# 取消暂存单个文件
git reset HEAD <文件>

# 使用 restore 命令
git restore --staged <文件>

# 取消暂存所有文件
git reset HEAD .

# 保留工作区修改
git reset --mixed

# 丢弃工作区修改(危险)
git reset --hard

回退提交

bash
# 回退到上一次提交(保留修改)
git reset --soft HEAD^

# 回退到上一次提交(取消暂存)
git reset --mixed HEAD^

# 回退到上一次提交(丢弃修改)
git reset --hard HEAD^

# 回退到指定提交
git reset --hard <提交哈>

# 创建新提交来撤销
git revert <提交哈>

# 撤销多个提交
git revert <提交1>..<提交2>

撤销已推送的提交

bash
# 使用 revert 创建撤销提交
git revert <提交哈>

# 推送撤销提交
git push origin <分支>

恢复删除的提交

bash
# 查看操作记录
git reflog

# 恢复到指定操作
git reset --hard <操作哈>

储藏工作现场

bash
# 储藏当前修改
git stash

# 储藏时添加说明
git stash save "说明信息"

# 查看储藏列表
git stash list

# 应用最近一次储藏
git stash apply

# 应用指定储藏
git stash apply stash@{0}

# 应用并删除储藏
git stash pop

# 删除储藏
git stash drop stash@{0}

# 删除所有储藏
git stash clear

标签管理

创建标签

bash
# 创建轻量标签
git tag <标签>

# 创建附注标签(推荐)
git tag -a <标签> -m "标签说明"

# 为特定提交创建标签
git tag -a <标签> <提交哈> -m "标签说明"

查看标签

bash
# 查看所有标签
git tag

# 查看标签信息
git show <标签>

# 按模式筛选标签
git tag -l "v1.*"

推送标签

bash
# 推送单个标签
git push origin <标签>

# 推送所有标签
git push origin --tags

删除标签

bash
# 删除本地标签
git tag -d <标签>

# 删除远程标签
git push origin --delete <标签>
git push origin :refs/tags/<标签>

检出标签

bash
# 检出标签(分离 HEAD 状态)
git checkout <标签>

# 基于标签创建分支
git checkout -b <分支> <标签>

查看信息

查看文件内容

bash
# 查看特定提交的文件内容
git show <提交哈>:<文件路>

# 查看特定版本的文件差异
git show <提交哈>

# 查看文件的历史版本
git log --follow -p <文件>

查看文件 blame

bash
# 查看文件每一行的修改信息
git blame <文件>

# 查看特定行范围
git blame -L 10,20 <文件>

# 显示邮箱而非用户名
git blame -e <文件>

查看文件历史

bash
# 查看文件修改历史
git log --follow <文件>

# 查看文件每次提交的差异
git log -p <文件>

# 查看文件何时被添加
git log --diff-filter=A -- <文件>

# 查看已删除文件的历史
git log --all --full-history -- <文件>

查看统计信息

bash
# 查看代码统计
git log --author="作者名" --pretty=tformat: --numstat | awk '{add+=$1; del+=$2} END {print "added:", add, "deleted:", del}'

# 查看每个作者的提交数
git shortlog -sn

# 查看提交活跃度
git log --format='%ad' --date=short | sort | uniq -c

Obsidian Git 插件

基本设置

在 Obsidian 中安装并配置 Obsidian Git 插件:

  1. 设置 → 第三方插件 → 浏览 → 搜索 "Obsidian Git"
  2. 安装并启用插件
  3. 配置自动备份间隔
  4. 设置提交信息模板

常用命令

在 Obsidian 命令面板(Ctrl/Cmd + P)中:

Obsidian Git: Create backup         # 创建备份(提交并推送)
Obsidian Git: Commit all changes    # 提交所有更改
Obsidian Git: Push                  # 推送到远程
Obsidian Git: Pull                  # 从远程拉取
Obsidian Git: Open source control view  # 打开源控制视图

推荐配置

yaml
自动备份:
  备份间隔: 10分钟
  自动推送: 启用
  提交信息: "vault backup: {{date}}"
  
冲突处理:
  自动合并: 谨慎使用
  手动解决: 推荐
  
初始化设置:
  初始化仓库: 自动
  远程仓库: 设置 origin

.obsidian/.gitignore 配置

gitignore
# 工作区文件(不要同步)
workspace
workspace-mobile.json

# 缓存文件
graph.json
workspace.json

# 插件数据
plugins/obsidian-git/data.json

自动提交模板

vault backup: {{date}} {{time}}

自动备份信息:
- 笔记数量: {{noteCount}}
- 最后修改: {{lastModified}}

定时备份脚本

在插件设置中配置:

yaml
Vault backup interval (minutes): 10
Auto backup interval (minutes): 0
Commit message: "vault backup: {{date}} {{time}}"

解决常见问题

问题1: 每次都需要输入密码

bash
# 使用 SSH 密钥认证
# 1. 生成 SSH 密钥
ssh-keygen -t rsa -b 4096 -C "your.email@example.com"

# 2. 添加公钥到 GitHub/GitLab
# 复制 ~/.ssh/id_rsa.pub 内容到 SSH Keys 设置

# 3. 修改远程地址为 SSH
git remote set-url origin git@github.com:username/repo.git

问题2: 合并冲突

bash
# 查看冲突文件
git status

# 手动解决冲突后
git add <冲突文>
git commit -m "解决合并冲突"

问题3: 文件太大无法推送

bash
# 查看大文件
git ls-files | xargs du -h | sort -h | tail -20

# 从历史中删除大文件
git filter-branch --force --index-filter \
  "git rm --cached --ignore-unmatch <文件路径>" \
  --prune-empty --tag-name-filter cat -- --all

与 Obsidian 工作流集成

场景1: 每日自动备份

markdown
1. 设置自动备份间隔: 30分钟
2. 自动推送: 启用
3. 启动时自动拉取: 启用
4. 提交信息: "自动备份: {{date}} {{time}}"

场景2: 多设备同步

markdown
设备A(主设备):
1. 正常编辑笔记
2. 每30分钟自动提交并推送

设备B(辅助设备):
1. 打开时自动拉取最新内容
2. 编辑后提交并推送
3. 关闭前确保推送完成

场景3: 团队协作

markdown
1. 使用 GitHub/GitLab 创建团队仓库
2. 每个成员克隆仓库
3. 创建个人分支进行编辑
4. 定期合并到主分支
5. 设置冲突解决流程

常用工作流

功能开发工作流

bash
# 1. 更新主分支
git checkout main
git pull origin main

# 2. 创建功能分支
git checkout -b feature/new-feature

# 3. 开发并提交
git add .
git commit -m "添加新功能"

# 4. 推送功能分支
git push -u origin feature/new-feature

# 5. 创建 Pull Request(在 GitHub/GitLab)

# 6. 合并后删除分支
git checkout main
git pull origin main
git branch -d feature/new-feature

紧急修复工作流

bash
# 1. 创建修复分支
git checkout -b hotfix/bug-fix main

# 2. 修复问题
git add .
git commit -m "修复紧急bug"

# 3. 合并到主分支
git checkout main
git merge hotfix/bug-fix

# 4. 推送
git push origin main

# 5. 删除修复分支
git branch -d hotfix/bug-fix

Git Flow 工作流

bash
# 开发分支
git checkout develop
git checkout -b feature/new-feature

# 完成开发后合并到 develop
git checkout develop
git merge --no-ff feature/new-feature

# 准备发布
git checkout -b release/1.0.0 develop

# 完成发布
git checkout main
git merge --no-ff release/1.0.0
git tag -a v1.0.0 -m "Release 1.0.0"

# 合并回 develop
git checkout develop
git merge --no-ff release/1.0.0

相关资源


💡 提示

将此页面添加到书签,随时查阅!建议定期备份你的 Obsidian 仓库。

最后更新:2026年3月13日编辑此页反馈问题