一、基础操作
- 初始化仓库
git init # 初始化本地仓库(生成.git目录)
git clone <url> # 克隆远程仓库到本地
- 状态检查
git status # 查看工作区/暂存区状态
git diff # 比较工作区与暂存区差异
git diff --cached # 比较暂存区与最新提交差异
- 文件管理
git add <file> # 添加文件到暂存区(支持通配符如*.txt)
git rm <file> # 删除文件(同时从暂存区移除)
git mv <old> <new> # 重命名文件
二、提交与历史
- 提交更改
git commit -m "message" # 提交暂存区内容
git commit -a -m "message" # 直接提交所有已跟踪文件的修改(跳过add)
- 查看历史
git log # 显示提交记录(支持--oneline简化输出)
git show <commit> # 查看某次提交的详细变更
git reflog # 查看所有操作记录(包括回滚前的提交)
- 回滚操作
git reset --hard <commit> # 强制回退到指定提交(危险!会丢失后续提交)
git revert <commit> # 创建反向提交撤销指定更改(安全)
三、分支管理
- 分支操作
git branch # 列出所有分支(*标记当前分支)
git branch <name> # 创建新分支
git checkout <branch> # 切换分支(或使用git switch <branch>)g
git checkout -b <name> # 创建并切换到新分支
git branch -d <name> # 删除分支(需先合并)
git branch -D <name> # 强制删除未合并分支
- 合并与冲突解决
git merge <branch> # 合并分支(可能产生冲突)
git mergetool # 调用图形化工具解决冲突
git add <file> # 标记冲突文件为已解决
四、远程仓库
- 关联远程仓库
git remote add origin <url> # 添加远程仓库
git remote -v # 查看远程仓库信息
- 推送与拉取
git push -u origin <branch> # 首次推送本地分支到远程
git push # 后续推送(需分支已关联)
git pull origin <branch> # 拉取远程分支并合并
git fetch origin # 拉取远程分支但不自动合并
五、高级操作
- 暂存工作(Stash)
git stash # 临时保存工作区更改
git stash apply #恢复但不删除最新暂存记录
git stash list # 查看所有暂存记录
git stash clear #清空所有暂存记录
git stash push -m"xxxx" #临时保存工作区更改并命名
git stash drop <id> # 删除指定暂存记录
- 标签管理
git tag # 列出所有标签
git tag <name> # 创建轻量标签
git tag -a <name> -m "message" # 创建带注释的标签
git push origin <tag> # 推送标签到远程
- 忽略文件
- 创建 文件,写入需忽略的文件模式(如 、)。
六、实用技巧
- 撤销未提交的修改
git checkout -- <file> # 丢弃工作区某文件的修改
git reset HEAD <file> # 取消暂存某文件(不丢弃修改)
- 查看提交差异
git diff <commit1> <commit2> # 比较两次提交的差异
- 清理未跟踪文件
git clean -fd # 删除所有未跟踪的文件和目录(谨慎使用!)
七、典型场景示例
- 紧急修复线上问题
git stash # 保存当前工作
git checkout master # 切换到主分支
git pull # 拉取最新代码
git checkout -b hotfix # 创建修复分支
git push origin hotfix # 推送修复分支
git checkout <branch> # 返回原分支
git stash pop # 恢复之前的工作
- 合并远程分支更新
git fetch origin # 拉取远程分支信息
git merge origin/main # 合并远程主分支到本地
git rebase origin # 本地分支有更新,希望保持线性历史
git merge --off-only #本地分支没有更新,同步远程分支最新封信
总结
- 核心流程:
- 分支策略:主分支(如 )稳定,开发在特性分支进行
- 冲突处理:可以使用 图形化解决
- 安全操作:避免直接使用 ,优先用