【问题标题】:What am I doing wrong when I try to rebase in Git?当我尝试在 Git 中变基时,我做错了什么?
【发布时间】:2019-01-31 21:48:48
【问题描述】:

我最近在一家新公司工作,团队选择将新更改重新定位到开发分支,而不是将更改合并到其中。我以为我理解它是如何工作的,但我经常遇到问题,以至于我不再确定我理解并且无法弄清楚我做错了什么。

典型场景:

  • 如果“开发”,我会为我的功能创建一个分支。
  • 我将更改提交到我的功能分支。当需要合并到开发中时,我已经在我的分支上提交了 3 次提交,并且在开发中已经提交了 5 次
    • 我在源代码树中右键单击“开发”,然后选择将我的更改重新定位到它的选项。
    • 没有冲突。 git 图看起来像预期的那样正确,除了我的分支说我现在领先 5 和落后 3(上面的数字),这显然阻止了我推动。

我不明白我做错了什么,而且我读到的关于 rebase 如何工作的每一个解释似乎都没有表明我错了。我这边的代码看起来也正确并且可以编译。

【问题讨论】:

  • 你能从命令行试试吗?也许可以看到:stackoverflow.com/questions/21111004/…
  • 重新定位到origin/develop 可能会更好。 develop 是一个本地分支,它是您在该分支上的最后一次本地工作离开它的地方; origin/develop 是您上次讨论的 origin 存储库上的任何分支,无论是获取或推送,还是包含获取的便利操作之一,例如克隆或拉取。
  • 如果你已经推送了,Rebaseing 总是会说“# behind, # ahead”。你正在改变历史。
  • @evolutionxbox 我认为这就是答案。所以为了rebase,我必须还没有推送我的提交。这是有道理的
  • 你可以随时变基,但如果你已经推送了那个分支,你需要强制推送变基更新。

标签: git atlassian-sourcetree rebase git-rebase


【解决方案1】:

您重新基于功能的“开发”分支可能不是最新的。

您必须首先更新您的本地开发分支 (git checkout develop; git pull),然后将您的功能分支重新定位到它 (git checkout feature; git rebase develop),然后您应该能够将其推送到远程目录。

【讨论】:

    猜你喜欢
    • 2021-04-22
    • 1970-01-01
    • 2019-06-22
    • 1970-01-01
    • 1970-01-01
    • 2011-11-06
    • 1970-01-01
    • 2020-05-31
    • 1970-01-01
    相关资源
    最近更新 更多