一、仓库初始化与克隆
# 初始化本地仓库
git init
# 克隆远程仓库
git clone https://github.com/user/repo.git
# 克隆并指定本地目录名
git clone https://github.com/user/repo.git myproject
二、基础工作流
# 查看工作区状态(高频)
git status
# 添加文件到暂存区
git add filename # 指定文件
git add . # 当前目录所有变更
git add -A # 整个仓库所有变更(包括删除)
# 提交变更
git commit -m "feat: 新增用户登录模块"
git commit -am "fix: 修复并直接提交已跟踪文件" # 跳过add,仅对已跟踪文件有效
# 查看提交历史
git log --oneline --graph --decorate # 简洁图形化
git reflog # 查看所有分支操作记录(救命命令)
三、分支操作(协作核心)
# 查看分支
git branch # 本地分支
git branch -r # 远程分支
git branch -a # 所有分支
# 创建并切换分支
git checkout -b feature/user-auth
# 等价于
git branch feature/user-auth
git checkout feature/user-auth
# 切换分支
git checkout main
# 合并分支
git merge feature/user-auth # 合并到当前分支
git merge --no-ff feature/user-auth # 保留分支历史
# 删除分支
git branch -d feature/user-auth # 安全删除(已合并)
git branch -D feature/user-auth # 强制删除(未合并)
# 重命名分支
git branch -m old-name new-name
四、远程同步
# 查看远程仓库
git remote -v
# 添加远程仓库
git remote add origin https://github.com/user/repo.git
# 推送
git push -u origin main # 首次推送需加 -u 建立关联
git push # 后续直接push
git push origin feature/user-auth # 推送指定分支
# 拉取
git pull # 拉取并自动合并(相当于 fetch + merge)
git fetch origin # 仅拉取不合并(安全)
git fetch --prune # 同步远程已删除的分支
# 追踪远程分支
git checkout -b local-branch origin/remote-branch
五、撤销与回退
# 工作区撤销(未add)
git checkout -- filename # 丢弃工作区修改
git checkout -- . # 丢弃所有修改
# 暂存区撤销(已add未commit)
git reset HEAD filename # 撤销add
git reset HEAD # 撤销所有add
# 回退版本(已commit)
git reset --soft HEAD~1 # 回退到上一个版本,保留工作区和暂存区
git reset --mixed HEAD~1 # 默认,回退并清空暂存区
git reset --hard HEAD~1 # 彻底回退(危险,会丢失修改)
# 回退到指定版本
git reset --hard commit-id # 通过git log查看id(前7位即可)
# 远程回退(已push)
git revert commit-id # 生成新提交抵消旧提交(安全)
六、标签管理
# 创建标签
git tag v1.0.0 # 当前提交打标签
git tag v1.0.0 commit-id # 指定提交打标签
git tag -a v1.0.0 -m "发布1.0.0正式版" # 带说明的标签
# 查看标签
git tag # 列表
git show v1.0.0 # 查看标签信息
# 推送标签
git push origin v1.0.0 # 推送单个标签
git push origin --tags # 推送所有标签
# 删除标签
git tag -d v1.0.0 # 删除本地
git push origin :refs/tags/v1.0.0 # 删除远程
七、高级技巧
# 暂存当前工作
git stash # 保存当前工作区
git stash list # 查看stash列表
git stash apply # 恢复最近stash(不删除)
git stash pop # 恢复并删除最近stash
git stash drop stash@{0} # 删除指定stash
# 交互式添加(分块提交)
git add -p # 按块选择要添加的内容
# 查看某行代码最后修改者
git blame filename # 逐行显示作者和提交
# 查找提交
git log --grep="关键词" # 按提交信息搜索
git log -S "代码内容" # 按代码变动搜索
# 清理无效文件
git clean -fd # 删除未跟踪的文件和目录(危险)
八、常见报错速查
| 报错信息 | 快速解决 |
|---|---|
| refusing to merge unrelated histories | git pull origin main --allow-unrelated-histories |
| error: failed to push some refs | 先 git pull 解决冲突再push |
| Your branch is behind 'origin/main' by X commits | git pull 或 git fetch + git merge |
| fatal: not a git repository | 当前目录未初始化,先 git init 或 git clone |
九、配置与别名
# 全局配置
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
git config --global core.editor "code --wait" # 设置VS Code为编辑器
# 常用别名
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.unstage 'reset HEAD --'
git config --global alias.last 'log -1 HEAD'
git config --global alias.visual '!gitk'
# 使用后:
git st # 等价于 git status
git co main # 等价于 git checkout main
十、总结
工作区 → git add → 暂存区 → git commit → 本地仓库 → git push → 远程仓库
↑ ↓
git checkout -- git pull / git fetch
最后提醒:
任何撤销操作前先用 git status 确认状态
重要操作前创建临时分支备份:git branch backup
团队协作前先 git pull 再 git push
commit 信息遵循规范(如Angular规范):type: subject