一、配置相关
# 设置用户名和邮箱(全局)
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
# 查看所有配置
git config --list
二、创建与获取仓库
# 在当前目录初始化仓库
git init
# 从远程仓库克隆
git clone https://github.com/user/repo.git
git clone git@github.com:user/repo.git
三、查看状态与比较差异
# 查看当前状态(修改了什么、哪些在暂存区)
git status
# 查看工作区与暂存区的差异
git diff
# 查看暂存区与最近一次提交的差异
git diff --cached
四、添加与提交
# 添加单个文件到暂存区
git add file.txt
# 添加当前目录所有修改
git add .
# 提交(-m 后面是提交说明)
git commit -m "feat: add new feature"
# 修改最近一次提交信息(未推送时常用)
git commit --amend
五、查看提交历史
# 查看提交历史(详细)
git log
# 单行显示历史(更紧凑)
git log --oneline
# 查看某个文件的修改历史
git log file.txt
六、分支操作
# 查看本地分支
git branch
# 创建新分支(基于当前分支)
git branch dev
# 切换到分支
git checkout dev
# 创建并切换到新分支(常用)
git checkout -b dev
# 删除本地分支
git branch -d dev # 安全删除(有未合并会失败)
git branch -D dev # 强制删除
新版 Git 也可以用
git switch更直观:
git switch dev # 切换分支
git switch -c dev # 创建并切换新分支
七、合并与冲突
# 切换到目标分支(要被合并到的分支)
git checkout main
# 把 dev 分支合并到当前分支
git merge dev
发生冲突时:
- 编辑冲突文件,手动保留正确内容
- 然后:
git add .
git commit # 完成合并
八、远程仓库操作
# 查看当前远程仓库
git remote -v
# 添加远程仓库
git remote add origin git@github.com:user/repo.git
# 修改远程地址
git remote set-url origin git@github.com:user/new-repo.git
九、推送与拉取
# 首次推送当前分支到远程,并设置跟踪
git push -u origin main
# 推送当前分支
git push
# 从远程拉取并合并
git pull
# 从远程获取最新记录(不自动合并)
git fetch
十、暂存现场(stash)
# 暂存当前未提交的修改
git stash
# 带说明的 stash
git stash save "WIP: something"
# 查看所有 stash
git stash list
# 应用最近一次 stash(保留记录)
git stash apply
# 应用并删除最近一次 stash
git stash pop
十一、撤销与回退
# 丢弃工作区对某个文件的修改(回到最近一次提交)
git checkout -- file.txt
# 撤回暂存区中的文件到工作区
git reset file.txt
# 回退到某次提交(保留修改到暂存区)
git reset --soft <commit_id>
# 回退到某次提交(修改回到工作区)
git reset --mixed <commit_id> # 默认
# 回退到某次提交(彻底丢弃之后的修改)
git reset --hard <commit_id>
<commit_id>可以通过git log或git log --oneline查看。
十二、撤销某个已提交的改动(revert)
# 生成一个新的提交,用来“反做”指定提交的修改
git revert <commit_id>
适合已经推到远程、不能直接改历史的情况。
十三、标签(Tag)
# 打轻量标签
git tag v1.0.0
# 打附注标签(带说明)
git tag -a v1.0.0 -m "Release version 1.0.0"
# 查看所有标签
git tag
# 推送某个标签
git push origin v1.0.0
# 推送所有标签
git push origin --tags
十四、挑选提交(cherry-pick)
# 把某个提交“复制”到当前分支
git cherry-pick <commit_id>
适合从其他分支“捞”出某个修复或功能。
十五、安全网:reflog
# 查看所有 HEAD 变动记录(包括 reset 等操作)
git reflog
当你不小心 reset –hard、删错东西时,可以通过 reflog 找回之前的提交 ID,再 reset 回去。
十六、超精简日常命令清单
# 状态 & 历史
git status
git log --oneline
# 常规提交流程
git add .
git commit -m "message"
git push
# 更新代码
git pull
# 分支
git branch
git checkout -b feature/login
git checkout main
git merge feature/login
# 撤销
git checkout -- file.txt
git reset --hard HEAD