如何将 Git 分支推送到远程仓库?


你刚刚完成了一个编码会话,实现了你的团队几个星期以来一直在计划的令人兴奋的新功能,准备将 Trello 卡移到已完成状态。你的本地分支包含所有代码,但它与“在我的机器上可以运行!”的梗图非常相似——它需要与世界(或至少你的团队)共享。这就是将你的 Git 分支推送到远程仓库发挥作用的地方,本教程旨在指导你如何完成此操作。

远程分支背后的原因

在我们深入探讨之前,首先了解为什么我们需要远程分支。我最近指导的一位开发者 Sarah 曾经问我:“我不能只将所有内容都保存在我的机器上吗?”好吧,你可以,但这就像写一部小说并且只保存在你的笔记本电脑上一样——非常浪费。

远程仓库服务于几个关键目的
  • 它们充当你的代码备份
  • 它们支持与团队成员的协作
  • 它们促进代码审查流程
  • 它们充当项目的事实来源

先决条件:为成功做好准备

在你可以推送你的分支之前,你需要
  • 在你的本地机器上安装 Git
  • 一个远程仓库(如 GitHub、GitLab 或 Bitbucket)
  • 设置正确的身份验证(SSH 密钥或凭据)
  • 一个包含已提交更改的本地分支

让我们使用以下命令验证你的 Git 远程设置

git remote -v
如果你从头开始,可能需要添加一个远程仓库
git remote add origin [email protected]:username/repository.git
在本指南中,我将介绍你需要将分支推送到远程仓库的不同场景以及如何处理它们。因此,无论团队或环境如何,你都可以充满信心地贡献你的力量。

基本推送:你的第一个远程分支

让我们从最简单的场景开始。你创建了一个名为“Login”的本地分支,并希望将其推送到远程仓库。以下是命令结构

git push
例如,将你的“login”分支推送到“origin”远程仓库
git push origin feature-login

真实场景:功能开发工作流程

让我分享一个真实场景。几年前,我们的团队正在开发一个电子商务平台,我负责实施一个新的支付网关。这意味着我和我的同事异步地为同一个仓库做出贡献,并且经常推送更改。以下是我如何管理我的分支工作流程的
1. 首先,我创建并检出一个新分支:这是为了给我一个隔离的环境来工作,不受同事不断推送的更改的影响。


git checkout -b feature/payment-gateway
2. 进行并提交我的更改后:这会添加我的更改并提交它们。
git add .
git commit -m "feat: Implement Stripe payment gateway integration"
3. 在推送之前,我确保从主分支拉取最新的更改:请记住我说我的分支没有同事的更改?现在我想确保自开始处理支付集成以来提交到仓库的每一部分新代码都拉取到我本地环境的主分支中。这确保了我的主分支与仓库的主分支保持一致。这可以防止在推送时发生冲突。
git checkout main
git pull
git checkout feature/payment-gateway
git rebase main
4. 最后,我推送了我的分支

git push origin feature/payment-gateway

高级推送场景和常见挑战

设置上游跟踪

开发人员中常见的一个困惑是处理上游跟踪。还记得我与之合作的另一位开发者 Alex 吗?(不,你不知道,我之前说的是 Sarah)。他一直输入完整的推送命令,直到我向他展示了这个简单的技巧
git push -u origin feature-branch
-u 标志(或--set-upstream)创建了一个跟踪关系,以便所有代码推送都默认推送到功能分支。在此之后,你可以简单地使用
git push

处理推送拒绝

有时,你会尝试推送并收到类似这样的错误
! [rejected] main -> main (non-fast-forward)
error: failed to push some refs to '[email protected]:username/repository.git'
不要惊慌!我也遇到过这种情况。这通常意味着在你工作时,其他人已将更改推送到远程分支。以下是如何解决此问题的方法

1. 首先,获取最新的更改
git fetch origin
2. 然后,合并或变基

选项 1:合并

git merge origin/your-branch
选项 2:变基(我首选的方法)

git rebase origin/your-branch
3. 如果发生冲突,请解决冲突,然后再次推送。
强制推送:双刃剑
有时你可能需要使用“-f”标志强制推送
git push -f origin feature-branch
⚠️ 警告:强制推送可能会覆盖远程更改,应谨慎使用。我曾经看到一位初级开发者(是的,我见过很多开发者)不小心用强制推送删除了一个星期团队的更改。

如果你必须强制推送,请使用更安全的--force-with-lease选项

git push --force-with-lease origin feature-branch

最佳实践和来自实践的技巧

经过多年的 Git 使用经验,以下是我遵循的一些黄金法则

1. 推送前始终拉取

git pull --rebase origin main

2. 使用描述性的分支名称

好的 - 

git push origin feature/user-authentication
不太好 -

git push origin new-stuff

3. 验证你的目标分支


检查当前分支

git branch --show-current
列出所有分支及其跟踪信息

git branch -vv

4. 合并后清理


删除本地分支

git branch -d feature-branch
删除远程分支

git push origin --delete feature-branch

故障排除常见问题


权限被拒绝


如果你看到
ERROR: Permission to username/repo.git denied to user
检查你的 SSH 密钥或仓库权限。我建议运行

ssh -T [email protected]

推送到错误的分支

如果你不小心推送到错误的分支,别担心。以下是如何修复它的方法

1. 推送到正确的分支

git push origin branch-name:correct-branch
2. 删除错误的远程分支

git push origin --delete wrong-branch

结论

将分支推送到远程仓库是 Git 的一项基本技能,随着实践会变得驾轻就熟。请记住,每个开发者都遇到过这些挑战——我当然也遇到过!关键是理解概念,遵循最佳实践,并从错误中学习。
请将本指南放在手边,很快你就能像专业人士一样推送分支。并且请记住我总是告诉我的学员的话:“经常提交,谨慎推送,并且始终仔细检查你的分支名称!”
编码愉快!🚀

更新于: 2024年10月30日

40 次浏览

启动你的 职业生涯

通过完成课程获得认证

开始
广告