初始化与克隆
基础git init在当前目录初始化一个新的Git仓库
基础git init my-project创建名为my-project的新目录并初始化仓库
基础git clone https://github.com/user/repo.git克隆远程仓库到本地
基础git clone https://github.com/user/repo.git my-dir克隆到指定目录名
暂存与提交
基础git add -A暂存整个仓库的所有修改(含删除)
基础git add -p交互式暂存,逐块选择要提交的修改
基础git commit -m "feat: 新功能"提交暂存区的修改
基础git commit -a -m "fix: 修复bug"跳过add,直接提交所有已跟踪文件的修改
撤销git commit --amend -m "新消息"修改最近一次提交的消息
撤销git commit --amend --no-edit追加文件到上次提交,不修改提交消息
分支管理
分支git branch -a列出所有分支(含远程)
分支git branch feature-login创建新分支
分支git checkout -b feature-login创建并切换到新分支
分支git switch -c feature-login创建并切换到新分支(推荐方式)
分支git branch -d feature-login删除已合并的分支
分支git branch -D feature-login强制删除未合并的分支
分支git branch -m old-name new-name重命名分支
合并与变基
分支git merge feature-login将指定分支合并到当前分支
分支git merge --no-ff -m "merge" feature-login禁用快进合并,创建合并提交
分支git rebase main将当前分支变基到main分支
分支git rebase -i HEAD~3交互式变基,修改最近3次提交
分支git rebase --abort中止变基操作,恢复原状
分支git cherry-pick abc1234将指定提交应用到当前分支
远程操作
远程git remote add origin https://github.com/user/repo.git添加远程仓库
远程git push -u origin main推送并设置上游分支
远程git push --force-with-lease安全地强制推送(推荐)
远程git pull origin main拉取远程更新并合并
远程git fetch --all获取所有远程更新(不合并)
远程git remote rename origin upstream重命名远程仓库
远程git remote remove origin移除远程仓库
查看日志
基础git log --oneline简洁查看提交历史
基础git log --graph --oneline --all图形化查看所有分支提交历史
基础git log -p -- file.txt查看指定文件的修改历史
基础git log --author="张三" --since="2024-01-01"按作者和日期过滤日志
基础git blame file.txt查看文件每行最后修改的提交和作者
基础git shortlog -sn统计每个作者的提交次数
暂存工作区
基础git stash push -m "正在开发登录功能"带描述暂存
基础git stash pop恢复最近一次暂存并删除记录
基础git stash apply stash@{1}恢复指定暂存但不删除记录
基础git stash drop stash@{0}删除指定暂存记录
基础git stash clear清空所有暂存记录
撤销与回退
撤销git reset --soft HEAD~1回退提交,保留暂存区和工作区修改
撤销git reset HEAD file.txt取消暂存指定文件(默认mixed)
撤销git reset --hard HEAD~1⚠️ 硬回退,丢弃所有修改
撤销git checkout -- file.txt丢弃工作区指定文件的修改
撤销git restore file.txt恢复工作区文件(推荐方式)
撤销git restore --staged file.txt取消暂存指定文件
撤销git revert abc1234创建新提交来撤销指定提交
撤销git reflog查看HEAD移动历史,用于恢复误删提交
标签管理
基础git tag v1.0.0在当前提交创建轻量标签
基础git tag -a v1.0.0 -m "版本1.0.0发布"创建带注释的标签
远程git push origin v1.0.0推送指定标签到远程
远程git push --tags推送所有标签到远程
基础git tag -d v1.0.0删除本地标签
对比差异
基础git diff --staged查看暂存区与上次提交的差异
基础git diff main..feature对比两个分支的差异
基础git diff HEAD~3查看最近3次提交的修改
基础git diff --name-only main..feature只显示有差异的文件名
基础git diff --stat main..feature显示差异统计摘要
配置与杂项
配置git config --global user.name "张三"设置全局用户名
配置git config --global user.email "zhangsan@example.com"设置全局邮箱
配置git config --global core.editor code设置默认编辑器为VS Code
配置git config --list查看所有配置
基础git clean -fd删除未跟踪的文件和目录
基础git show abc1234查看指定提交的详细信息和diff
基础git bisect start / git bisect good / git bisect bad二分查找引入bug的提交
基础git submodule update --init --recursive初始化并更新子模块
进阶操作
分支git rebase -i HEAD~5交互式变基:压缩、重排、编辑最近提交
分支git worktree add ../hotfix-branch hotfix在另一个目录同时检出另一个分支
基础git bisect run npm test自动化二分查找(用测试脚本判断好坏)
基础git archive -o latest.zip HEAD导出当前提交为zip压缩包
基础git sparse-checkout init --cone && git sparse-checkout set src/稀疏检出,只拉取部分目录
撤销git restore --source=HEAD~3 -- file.txt从指定提交恢复单个文件