一、基础配置
-
设置用户信息
git config --global user.name "Your Name"# 配置全局用户名(提交代码时显示的作者)git config --global user.email "your@email.com"# 配置全局邮箱(需与远程仓库账号绑定)git config --global core.editor "code --wait"# 配置默认编辑器(示例为 VS Code,提交时调用) -
查看与修改配置
git config --list# 列出当前所有配置项(含全局 / 本地仓库配置)git config user.name# 单独查看用户名配置git config --global --unset user.email# 删除全局邮箱配置(需重新设置时使用)
二、仓库操作
-
初始化与关联仓库
git init# 在当前目录创建新 Git 仓库(生成隐藏的.git 文件夹)git remote add origin <仓库URL># 关联本地仓库到远程仓库(首次推送前执行)git remote -v# 查看已关联的远程仓库地址(显示 fetch/push 双向地址) -
克隆远程仓库
git clone <仓库URL># 将远程仓库完整复制到本地(含所有分支历史)git clone <仓库URL> --depth 1# 克隆浅仓库(仅拉取最新 1 次提交,节省时间)git clone <仓库URL> <自定义目录名># 克隆到指定本地目录(避免目录名与仓库名一致) -
状态与日志查看
git status# 查看工作区 / 暂存区文件状态(红色 = 未暂存,绿色 = 已暂存)git log# 显示详细提交历史(含作者、时间、commit id)git log --oneline# 简洁格式显示历史(仅显示 commit id 前 7 位 + 提交信息)git log --graph --oneline# 图形化显示分支合并历史(直观查看分支走向)git reflog# 查看所有操作记录(含已删除提交、reset 操作,用于找回误删内容)
三、文件操作
-
暂存与提交更改
git add <文件名># 将指定文件从工作区添加到暂存区git add .# 添加当前目录所有修改(新增 / 修改 / 删除文件)到暂存区git add -p <文件名># 交互式添加(逐段选择文件修改内容,避免冗余提交)git commit -m "标签: 提交信息"# 提交暂存区到本地仓库(标签参考:feat/fix/docs)git commit -am "标签: 提交信息"# 直接提交已跟踪文件(跳过 git add,未跟踪文件无效)git commit --amend# 修改最近一次提交信息(未推送到远程时使用) -
撤销与恢复修改
git checkout -- <文件名># 丢弃工作区对指定文件的修改(恢复到最近提交 / 暂存状态)git reset HEAD <文件名># 将暂存区的文件撤回至工作区(取消 git add 操作)git restore <文件名># (新版 Git)替代 git checkout --,丢弃工作区修改git restore --staged <文件名># (新版 Git)替代 git reset HEAD,将暂存区文件撤回git rm <文件名># 删除文件并添加到暂存区(等价于手动删除后 git add)git rm --cached <文件名># 从暂存区移除文件,但保留本地文件(停止跟踪该文件)
四、分支管理
-
分支基础操作
git branch# 显示所有本地分支(当前分支前带 *)git branch -a# 显示所有分支(本地 + 远程,远程分支格式:remotes/origin/xxx)git branch -vv# 查看分支与远程分支的跟踪关系(如 main -> origin/main)git branch <新分支名># 创建新分支(基于当前分支最新提交,不切换)git checkout -b <新分支名># 创建新分支并立即切换(旧版命令)git switch -c <新分支名># 创建新分支并立即切换(新版 Git 推荐,更直观)git checkout <分支名># 切换到已存在的本地分支(旧版命令)git switch <分支名># 切换到已存在的本地分支(新版 Git 推荐) -
分支删除与合并
git branch -d <分支名># 删除本地已合并的分支(未合并会提示失败,防止误删)git branch -D <分支名># 强制删除本地分支(无论是否合并,谨慎使用)git merge <分支名># 将指定分支合并到当前分支(如合并 dev 到 main)git merge --abort# 合并冲突时,放弃当前合并操作(回到合并前状态)git rebase <分支名># 变基操作(将当前分支提交 “嫁接” 到目标分支,使历史更线性)git rebase --abort# 变基冲突时,放弃当前变基操作 -
远程分支同步
git fetch# 拉取远程仓库所有分支更新(不合并到本地,仅同步信息)git fetch origin <分支名># 拉取远程指定分支的更新(节省时间)git pull# 拉取远程跟踪分支更新并合并(等价于 git fetch + git merge)git pull origin <远程分支>:<本地分支># 拉取远程分支并合并到指定本地分支git push -u origin <分支名># 推送本地分支到远程并建立跟踪(首次推送新分支用)git push# 推送本地当前分支到远程跟踪分支(已建立跟踪后使用)git push origin --delete <分支名># 删除远程分支(需先确保本地分支已处理)
五、高级操作
-
版本回退
git reset --soft HEAD~1# 撤销最近 1 次提交(保留工作区 / 暂存区修改,仅删提交记录)git reset --mixed HEAD~1# 撤销最近 1 次提交(保留工作区,删除暂存区,默认模式)git reset --hard HEAD~1# 彻底撤销最近 1 次提交(删除工作区 / 暂存区修改,谨慎!)git reset --hard <commit-id># 回滚到指定 commit(需先通过 git log 获取 commit id)git revert <commit-id># 创建新提交撤销指定提交(已推送到远程时使用,不破坏历史) -
标签管理(版本标记)
git tag# 列出所有本地标签(常用于标记发布版本,如 v1.0.0)git tag -a <标签名> -m "描述"# 创建带注释的标签(含版本说明,推荐)git tag <标签名># 创建轻量标签(仅记录 commit id,无额外信息)git tag -d <标签名># 删除本地标签git push origin <标签名># 推送指定标签到远程仓库git push origin --tags# 推送所有本地标签到远程仓库git push origin --delete <标签名># 删除远程标签 -
临时暂存(工作区保存)
git stash# 暂存当前工作区未提交的修改(临时切换分支时使用)git stash list# 查看所有暂存的 stash 记录(按时间排序,stash@{0} 为最新)git stash pop# 恢复最近 1 次 stash 的内容,并删除该 stash 记录git stash drop <stash-id># 删除指定 stash 记录(如 git stash drop stash@{1})
六、冲突解决
-
差异对比
git diff# 显示工作区与暂存区的文件差异(未 git add 的修改)git diff --staged# 显示暂存区与最新提交的文件差异(已 git add 未 commit 的修改)git diff <分支1> <分支2># 比较两个分支的所有文件差异git diff <commit-id1> <commit-id2># 比较两个 commit 之间的差异 -
冲突处理工具
git mergetool# 启动外部合并工具(如 VS Code、Beyond Compare)解决冲突git cherry-pick <commit-id># 将指定 commit “复制” 到当前分支(跨分支复用单个提交)git checkout --theirs <文件名># 冲突时,选择远程分支的文件版本git checkout --ours <文件名># 冲突时,选择本地分支的文件版本
使用提示
- 分支命名建议:main(主分支)、dev(开发分支)、feature/xxx(功能分支)、hotfix/xxx(紧急修复分支)
- 提交信息规范:按 “标签:描述” 格式(如 feat: 新增登录功能、fix: 修复支付 bug),可通过 git hook 强制校验
- 危险操作预警:git reset --hard、git checkout -- <文件> 会删除本地修改,执行前建议用 git status 确认状态
- 帮助查询:任何命令后加 --help(如 git merge --help)可查看官方详细文档