git - 无法将本地 git 分支推送到上游

标签 git

我正在研究代表不同功能的 2 个分支。这是我所做的步骤。

  1. 从 dev 创建了分支 feature_a
  2. 从 dev 创建了分支 feature_b
  3. 已完成功能_a 的工作;推送到上游并与 dev merge
  4. 重新调整开发人员的 feature_b 基础,以包含开发人员的所有新提交
  5. 对 feature_b 进行了更多提交
  6. git push origin feature_b throws:更新被拒绝,因为当前分支的尖端位于其远程对应分支的后面。

我不明白为什么本地 feature_b 分支会位于上游分支后面。 注意:我是唯一一个在这个分支上工作的人,也是最后一个致力于开发的人。

最佳答案

由于您将 feature_b 重新基于 dev 的最新更改,因此您有效地更改了 feature_b 的历史记录,因此现在 feature_b 和 origin/feature_b 出现了分歧。您需要git push origin feature_b --force来获取对origin的更改。

问题是 git push 假设 origin/feature_b 可以快速转发到您的本地分支。由于您重新调整了本地分支的基础,因此无法再快进。

使用 --force 选项,您可以告诉远程分支忽略其当前状态并用本地分支覆盖它。因此 git push --force origin feature_b 只需用本地 feature_b 覆盖 origin/feature_b 即可。

请注意,--force 选项可能会导致远程存储库丢失提交,因此请谨慎使用。

关于git - 无法将本地 git 分支推送到上游,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32339513/

相关文章:

git - git中的预取钩子(Hook)功能

git - 在 github 上的 fork 中跟踪上游的最佳实践

Git 提交未显示在 Github 网页上

git - 我可以在 git 中检索已创建、暂存、从未提交但随后被删除的文件吗?

git - PAT(个人访问 token )的每个项目或每个 repo 范围

git - 在 eclipse Ubuntu 中重新索引存储库

git - 无法从 IntellIJ 中的远程存储库读取

git - Git 如何跟踪您的存储库中的文件而不覆盖其他人分支中的文件?

windows - Git 使所有 check out 文件的行尾为 CRLF

java - Gitflow 与 Maven 的工作流程 - 何时构建什么?