git push 命令
简介
git push 是 Git 中用于将本地提交推送到远程仓库的命令。它是将本地更改共享到远程仓库的主要方式。
基本概念
什么是推送
推送是将本地分支的提交上传到远程仓库的过程。它使其他开发者可以访问你的更改。
推送的前提条件
- 本地有新的提交
- 已配置远程仓库
- 有推送权限
命令语法
1 2 3 4 5 6 7 8 9 10 11
| git push [远程仓库] [分支名]
git push
git push --all
git push --tags
|
查看帮助文档
常用选项
| 选项 |
说明 |
-u, --set-upstream |
设置上游分支并推送 |
--all |
推送所有分支 |
--tags |
推送所有标签 |
--force, -f |
强制推送(覆盖远程) |
--force-with-lease |
更安全的强制推送 |
--delete |
删除远程分支 |
--dry-run |
预览模式,不实际推送 |
-v, --verbose |
详细输出 |
-q, --quiet |
静默模式 |
--no-verify |
跳过 pre-push 钩子 |
--follow-tags |
推送提交时同时推送相关标签 |
--mirror |
镜像推送(推送所有引用) |
基本使用
1. 基本推送
1 2 3 4 5 6 7 8
| $ git push
$ git push origin main
$ git push -u origin main
|
2. 推送所有分支
1 2 3 4 5
| $ git push --all origin
$ git push --all --tags origin
|
3. 推送标签
1 2 3 4 5 6 7 8
| $ git push --tags origin
$ git push origin v1.0.0
$ git push --follow-tags origin
|
4. 删除远程分支
1 2 3 4 5
| $ git push origin --delete branch-name
$ git push origin :branch-name
|
5. 强制推送
1 2 3 4 5
| $ git push --force origin main
$ git push --force-with-lease origin main
|
警告:强制推送会覆盖远程历史,请谨慎使用!
6. 预览推送
1 2
| $ git push --dry-run origin main
|
实际应用场景
场景1:首次推送
1 2 3 4 5 6 7 8 9
| $ git checkout -b feature/new-feature
$ git add . $ git commit -m "Add new feature"
$ git push -u origin feature/new-feature
|
场景2:常规推送
1 2 3 4
| $ git add . $ git commit -m "Update feature" $ git push
|
场景3:推送标签
1 2 3 4 5 6 7 8
| $ git tag v1.0.0
$ git push origin v1.0.0
$ git push --tags origin
|
场景4:删除远程分支
1 2
| $ git push origin --delete feature/old-feature
|
场景5:强制推送(谨慎使用)
1 2 3
| $ git rebase main $ git push --force-with-lease origin feature-branch
|
常见问题和解决方案
问题1:推送被拒绝
错误信息:
1
| ! [rejected] main -> main (non-fast-forward)
|
解决方案:
1 2 3 4 5 6 7 8 9
| $ git pull origin main
$ git push origin main
$ git pull --rebase origin main $ git push origin main
|
问题2:需要认证
解决方案:
1 2 3 4 5
| $ git config --global credential.helper store
$ ssh-keygen -t ed25519 -C "your_email@example.com"
|
问题3:推送失败(权限不足)
解决方案:
问题4:推送了错误的提交
解决方案:
1 2 3 4 5 6 7
| $ git reset HEAD~1 $ git push --force-with-lease origin main
$ git revert HEAD $ git push origin main
|
最佳实践
1. 使用 –force-with-lease
1 2 3 4 5
| $ git push --force-with-lease origin main
$ git push --force origin main
|
2. 首次推送设置上游
1 2 3 4 5
| $ git push -u origin branch-name
$ git push
|
3. 推送前检查
1 2 3 4 5 6
| $ git status $ git log origin/main..HEAD
$ git push --dry-run origin main
|
4. 不要强制推送共享分支
1 2 3 4 5
| $ git push --force origin main
$ git push --force-with-lease origin feature/my-branch
|
5. 推送前同步
1 2 3
| $ git pull origin main $ git push origin main
|
总结
git push 是将本地更改共享到远程仓库的关键命令:
- 基本用法:
git push origin branch 推送分支
- 首次推送:
git push -u origin branch 设置上游
- 强制推送:
git push --force-with-lease 更安全
- 推送标签:
git push --tags 推送所有标签
关键要点:
- ✅ 使用
--force-with-lease 而不是 --force
- ✅ 首次推送时设置上游
- ✅ 推送前先同步远程更新
- ✅ 不要强制推送共享分支
- ❌ 不要强制推送可能影响其他人的提交