git常用命令集
2457 字
12 分钟
git常用命令集

Git 常用命令完整版
覆盖日常开发 95% 以上场景,包含基础操作、团队协作、冲突处理、SSH 与令牌、误操作恢复等。
目录
- 配置
- 创建与克隆仓库
- 日常提交
- 查看差异与历史
- 分支操作
- 远程仓库
- SSH 密钥配置
- Personal Access Token
- 凭证管理
- 撤销与回退
- 标签
- 暂存工作区 stash
- 清理工作区
- .gitignore 相关
- 子模块
- 常见工作流
- 冲突解决
- 高级操作
- 安全与恢复
- 帮助命令
1. 配置
# 设置用户名和邮箱git config --global user.name "Your Name"git config --global user.email "you@example.com"
# 查看配置git config --listgit config --global --listgit config --local --list
# 设置默认编辑器git config --global core.editor "vim"
# 设置默认分支名为 maingit config --global init.defaultBranch main
# 设置快捷别名git config --global alias.st statusgit config --global alias.co checkoutgit config --global alias.br branchgit config --global alias.ci commitgit config --global alias.lg "log --oneline --graph --decorate --all"2. 创建与克隆仓库
# 在当前目录初始化一个新仓库git init
# 克隆远程仓库到本地git clone <url>
# 克隆指定分支git clone -b <branch> <url>
# 浅克隆(只拉取最近一次提交,速度快)git clone --depth 1 <url>3. 日常提交
# 查看当前状态git statusgit status -s
# 把文件添加到暂存区git add <file>git add .git add -Agit add -p # 交互式选择要提交的修改片段
# 提交git commit -m "message"git commit -am "message" # 只对已经跟踪过的文件有效(新文件要先 add)git commit --amend # 修改上一次提交git commit --amend --no-edit # 修改上一次提交但不改提交信息4. 查看差异与历史
# 查看差异git diffgit diff --stagedgit diff <branch1>..<branch2>git diff <commit1> <commit2>
# 查看历史git loggit log --onelinegit log --oneline --graph --decorate --allgit log -p <file>git show <commit>git blame <file>git blame -L 10,20 <file> # 查看指定行范围
# 搜索提交git log -S "text" # 查找添加或删除该字符串的提交git log -G "regex" # 查找匹配正则的提交
# 搜索代码git grep "keyword"
# 查看所有操作记录(包括提交、重置等)git reflog5. 分支操作
# 查看分支git branchgit branch -agit branch -vv
# 创建分支git branch <name>
# 切换分支git switch <branch>git checkout <branch>git switch - # 切换到上一个分支git checkout - # 旧写法
# 创建并切换分支git switch -c <new-branch>git checkout -b <new-branch>
# 删除分支git branch -d <branch>git branch -D <branch> # 强制删除(即使未合并)
# 重命名分支git branch -m <old> <new>git branch -M main # 强制把当前分支重命名为 main
# 合并分支git merge <branch>git merge --no-ff <branch>
# 变基git rebase <branch>git rebase -i HEAD~3
# 拣选某个提交git cherry-pick <commit>6. 远程仓库
# 查看远程仓库git remote -vgit remote show origin
# 添加远程仓库git remote add origin <url>
# 修改远程仓库地址git remote set-url origin <url>
# 删除远程仓库git remote remove origin
# 拉取git fetchgit fetch --all --prunegit pullgit pull --rebase
# 推送git pushgit push -u origin <branch>git push origin <branch>
# 安全强制推送(推荐,避免覆盖别人提交)git push --force-with-lease
# 强制推送(慎用,会覆盖远程)git push --force
# 删除远程分支git push origin --delete <branch>
# 推送标签git push --tags7. SSH 密钥配置
用 SSH 方式连接,不用每次输入账号密码。
# 1. 查看是否已有 SSH 密钥ls -al ~/.ssh# 常见文件名:id_rsa、id_ed25519
# 2. 生成新的 SSH 密钥(推荐用 ed25519 算法)ssh-keygen -t ed25519 -C "your_email@example.com"# 一路回车就行,也可以设置密码短语
# 3. 启动 ssh-agent(Linux/macOS)eval "$(ssh-agent -s)"ssh-add ~/.ssh/id_ed25519
# Windows PowerShell 启动 ssh-agentStart-Service ssh-agentssh-add $env:USERPROFILE\.ssh\id_ed25519
# 4. 查看公钥内容cat ~/.ssh/id_ed25519.pub# Windowstype $env:USERPROFILE\.ssh\id_ed25519.pub把公钥内容复制到 GitHub → Settings → SSH and GPG keys → New SSH key。
# 5. 测试连接ssh -T git@github.com# 成功会显示:Hi <username>! You've successfully authenticated...
# 6. 把远程仓库地址改成 SSH 格式git remote set-url origin git@github.com:<user>/<repo>.gitgit remote -v # 确认已切换
# 7. 多个账号时:配置 ~/.ssh/config# Host github-work# HostName github.com# User git# IdentityFile ~/.ssh/id_ed25519_work
# 8. 临时指定某次提交使用的密钥GIT_SSH_COMMAND="ssh -i ~/.ssh/id_ed25519" git clone git@github.com:...8. Personal Access Token
用 HTTPS 推送时,GitHub 已不再支持密码,需要用 Token 代替。
# 1. 生成 Token# GitHub → Settings → Developer settings# → Personal access tokens → Tokens (classic)# 勾选 repo 权限(如果需要 workflow 再勾 workflow)
# 2. 用 Token 来推送# 用户名:GitHub 用户名# 密码:粘贴 Token(不是登录密码)
# 3. 把 Token 缓存起来,不用每次都输入git config --global credential.helper store# Linux 也可以用:git config --global credential.helper cachegit config --global credential.helper 'cache --timeout=3600'
# Windows 下用 Git Credential Managergit config --global credential.helper manager
# 4. 查看或清除已保存的凭证git config --global --get credential.helper# Windowscmdkey /list | findstr gitcmdkey /delete:git:https://github.com
# 5. 临时把 Token 写在 URL 里(不推荐长期用)git clone https://<token>@github.com/<user>/<repo>.git
# 6. 细粒度 Token(Fine-grained tokens,权限更细)# Settings → Developer settings → Fine-grained tokens# 可以只授权某个仓库、某类权限,更安全9. 凭证管理
# 查看当前使用的凭证助手git config --global credential.helper
# 列出已保存的凭证# macOSgit credential-osxkeychain get# Linuxcat ~/.git-credentials# Windowscmdkey /list
# 删除已保存的凭证(换账号或 Token 失效时)# Linuxrm ~/.git-credentials# macOSgit credential-osxkeychain erase# Windowscmdkey /delete:git:https://github.com
# 建议统一使用一种认证方式,避免混乱10. 撤销与回退
# 丢弃工作区里还没暂存的修改git restore <file>git checkout -- <file> # 旧写法
# 把文件从暂存区撤回到工作区git restore --staged <file>git reset HEAD <file> # 旧写法
# 从指定提交恢复文件git restore --source=<commit> <file>
# 回退提交git reset --soft HEAD~1 # 回退一次提交,保留修改和暂存git reset --mixed HEAD~1 # 回退一次提交,保留修改但取消暂存(默认)git reset --hard HEAD~1 # 回退一次提交,丢弃所有修改(慎用)
# 生成一个新提交来撤销某次提交的改动git revert <commit>11. 标签
# 查看标签git tag
# 创建带说明的标签git tag -a v1.0.0 -m "release v1.0.0"
# 查看标签详情git show v1.0.0
# 推送标签git push origin v1.0.0git push origin --tags
# 删除本地标签git tag -d v1.0.0
# 删除远程标签git push origin --delete tag v1.0.012. 暂存工作区 stash
# 保存当前修改到暂存区,并加说明git stashgit stash push -m "message"git stash save "message"
# 查看 stash 列表git stash listgit stash show
# 恢复git stash applygit stash pop
# 删除git stash drop stash@{0}git stash clear13. 清理工作区
# 预览会删除哪些未跟踪文件git clean -n
# 删除未跟踪的文件git clean -f
# 删除未跟踪的文件和目录git clean -fd
# 连 .gitignore 忽略的文件也删除(慎用)git clean -fdx
git clean -fdx和git reset --hard会丢失数据,慎用。
14. .gitignore 相关
# 创建 .gitignoreecho "node_modules/" >> .gitignoreecho "dist/" >> .gitignore
# 停止跟踪已提交的文件,但保留本地文件git rm -r --cached <file>git rm -r --cached .
git add .git commit -m "update .gitignore"15. 子模块
# 添加子模块git submodule add <url> <path>
# 查看子模块状态git submodule status
# 初始化并递归更新子模块git submodule update --init --recursive
# 更新子模块到远程最新git submodule update --remote16. 常见工作流
初始化并推送到远程
git initgit add .git commit -m "init"git branch -M maingit remote add origin <url>git push -u origin main同步远程主分支
git fetch --all --prunegit switch maingit pull --rebase合并远程主分支到当前分支
git fetch origingit merge origin/main
# 或者git rebase origin/main临时保存当前修改
git stash push -m "wip"git switch maingit pullgit switch -git stash pop安全强制推送
git push --force-with-lease首次用 SSH 推送
git initgit add .git commit -m "init"git branch -M maingit remote add origin git@github.com:<user>/<repo>.gitgit push -u origin main17. 冲突解决
合并冲突
git status # 查看冲突文件# 手动编辑冲突文件,保留需要的代码git add <file>git merge --continue# 或者git commit变基冲突
git status# 手动编辑冲突文件git add <file>git rebase --continue# 跳过当前提交git rebase --skip# 中止变基git rebase --abort拣选冲突
git status# 手动编辑冲突文件git add <file>git cherry-pick --continue# 中止git cherry-pick --abort中止合并
git merge --abort18. 高级操作
交互式 rebase
git rebase -i HEAD~n# 常用操作:# pick 保留提交# reword 修改提交信息# edit 修改提交内容# squash 合并到上一个提交并保留信息# fixup 合并到上一个提交并丢弃信息# drop 删除提交修复旧提交
git commit --fixup <commit>git rebase -i --autosquash <commit>~1二分查找问题提交
git bisect startgit bisect bad # 当前版本有问题git bisect good <commit> # 已知正常版本# Git 会自动切换到中间提交,测试后标记git bisect goodgit bisect bad# 找到后重置git bisect reset多工作区
git worktree add ../hotfix maingit worktree listgit worktree remove ../hotfix补丁协作
# 生成补丁git format-patch -1 <commit>git format-patch <commit1>..<commit2>
# 应用补丁git am < patch-filegit apply < patch-file大文件 LFS
git lfs installgit lfs track "*.psd"git add .gitattributes仓库维护
git gcgit fsckgit count-objects -vH钩子与规范
# 本地钩子目录.git/hooks
# 常用工具pre-commithuskycommitlint19. 安全与恢复
# 查看所有操作记录git reflog
# 恢复到某个操作之前git reset --hard HEAD@{1}
# 为某次提交创建救援分支git branch rescue <commit>
# 安全强制推送git push --force-with-lease
# SSH 相关排查ssh -vT git@github.com # 查看详细连接过程ssh-add -l # 列出已加载的密钥误操作别着急,先
git reflog,大多数提交都能找回。
20. 帮助命令
git help <command>git <command> -h慎用命令
git reset --hardgit clean -fdxgit push --forcegit rebase已经推送到远端的公共分支
建议:提交前先
git status,推送前先git pull --rebase,强制推送优先用--force-with-lease。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!













