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 -cObsidian Git 插件
基本设置
在 Obsidian 中安装并配置 Obsidian Git 插件:
- 设置 → 第三方插件 → 浏览 → 搜索 "Obsidian Git"
- 安装并启用插件
- 配置自动备份间隔
- 设置提交信息模板
常用命令
在 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-fixGit 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 仓库。