一、基础使用
# 拉取远程代码(当前分支)
git pull
# 查看远程仓库地址
git remote -v
# 删除远程仓库地址
git remote remove <name>
# 添加远程仓库地址
git remote add origin <repository_url>
# 查看当前仓库状态
git status
# 添加所有文件到暂存区
git add .
# 提交代码并添加说明
git commit -m "提交说明"
# 推送到远程 master/main 分支
git push origin master
# 第一次推送(建立 upstream 关联)
git push -u origin master
⚠️ 新项目默认分支可能是
main,请根据实际情况替换master
二、分支管理
# 查看本地分支
git branch
# 创建分支
git branch <branch-name>
# 切换分支
git checkout <branch-name>
# 创建并切换分支
git checkout -b <branch-name>
# 合并指定分支到当前分支
git merge <branch-name>
# 删除本地分支
git branch -d <branch-name>
# 强制删除分支(未合并)
git branch -D <branch-name>
# 查看分支合并图
git log --graph --oneline --all
三、版本回退与恢复
# 查看提交历史
git log
# 查看简洁提交历史
git log --oneline
# 回退到指定提交(会丢弃之后的提交)
git reset --hard <commit_hash>
# 查看所有操作记录(可找回误删提交)
git reflog
# 强制推送(⚠️ 谨慎使用)
git push -f
⚠️
reset --hard+push -f会改写历史,不要在公共分支随意使用
四、清空提交历史(保留代码)
常用于:重新初始化仓库 / 清理历史记录
# 1. 创建一个没有历史记录的分支
git checkout --orphan latest_branch
# 2. 添加所有文件
git add -A
# 3. 提交
git commit -m "Initial commit"
# 4. 删除原 master 分支
git branch -D master
# 5. 重命名当前分支为 master
git branch -m master
# 6. 强制推送到远程
git push -f origin master
五、Tag
🏷️ 1. 查看已有标签
git tag
模糊匹配:
git tag -l "v1.*"
🏷️ 2. 创建标签
✔️ 轻量标签(不推荐用于发布)
像一个书签,直接指向某次提交。
git tag v1.0.0
对指定 commit 打标签:
git tag v1.0.0 <commit_hash>
✅ 附注标签(推荐用于版本发布)
git tag -a v1.0.0 -m "Release version 1.0.0"
指定提交:
git tag -a v1.0.0 -m "Release version 1.0.0" <commit_hash>
🚀 3. 推送标签到远程
# 推送单个标签
git push origin v1.0.0
# 推送所有本地标签
git push origin --tags
❌ 4. 删除标签
# 删除本地标签
git tag -d v1.0.0
# 删除远程标签(推荐写法)
git push origin --delete tag v1.0.0
♻️ 5. 修改 / 重建标签
如果标签打错了,可以删除再重打。
git tag -d v1.0.0
git push origin --delete tag v1.0.0
git tag -a v1.0.0 -m "Fix tag" <commit_hash>
git push origin v1.0.0
🔍 6. 查看标签对应的提交
git show v1.0.0
📦 7. 使用标签生成发布包
git archive --format=zip --output=v1.0.0.zip v1.0.0
8. 推送区别
| 命令 | 推送内容 |
|---|---|
git push |
只推送 commit |
git push origin --tags |
推送所有标签 |
git push --follow-tags |
推送关联的 annotated tag |
✅ 推荐发布流程使用:
git push --follow-tags
六、常见错误解决
❗ 错误 1:HTTP/2 推送失败
error: RPC failed; curl 92 HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR (err 1)
解决办法:
git config --global http.version HTTP/1.1