Git rebase工作流程 - 在IDEA重新定义后拉动

时间:2014-05-05 09:49:21

标签: git version-control intellij-idea

我正在阅读git rebase工作流程,我认为我得到了基本的想法,但我的问题是我偶然发现的所有教程都没有讨论你有类似这样的情况:

  1. 使用远程存储库中的更改更新本地存储库,创建功能分支。
  2. 黑客攻击功能分支
  3. 使用远程存储库中的更改更新master(例如git pull上的master
  4. Rebase功能分支到主
  5. master与功能分支合并(这应该会导致快进)
  6. 将更改推送到远程并收到错误,其他人已推送到master
  7. 现在,如果我们仍希望在没有合并提交的情况下保留master分支上的完全线性历史记录,该怎么办?

    如果我没有弄错,我应该执行git pull --rebase然后尝试推送,但如果这是答案,则可以仅从IDEA级别(正常git pull进行rebase工作流程由于其他人推送的提交导致合并提交)?查看手册:https://www.jetbrains.com/idea/webhelp/pull-changes-dialog.html在拉出对话框中没有用于变基的选项。

2 个答案:

答案 0 :(得分:1)

我认为在执行4之后你不会合并,而是在你的主人身上重新设置功能分支...所以将你的功能分支重新定位到更新的主分支,然后从主分支顶部的分支重新定义你的更改,然后推。

在命令中,这将是这样的:

  1. git pull(在分支主机上)
  2. git checkout -b feature_branch(此处的代码)
  3. git checkout master&& git pull
  4. git checkout feature_branch&& rebase master
  5. git checkout master&& rebase feature_branch
  6. git push
  7. 在工作中,我主要鼓励我的同事阅读关于变基的this article和关于该主题的后续行动

答案 1 :(得分:1)

在IntelliJ中,我使用工作流程:

  1. 确保本地主人是最新的
  2. 创建一个功能分支并破解内容
  3. 在分支中,从git菜单中选择rebase。应该是你的本地主人(refs / heads / master)。确保"互动"被选中。
  4. 将第一次提交保留为选择或编辑。其他提交将是&#​​34;壁球"。然后开始变基。
  5. 过了一会儿,您的分店将在您当地的主人中重新定位。您只需要推送所有内容并删除您的分支。如果有人推动掌握某些东西,那就让IDEA为你做一些改造。

    希望有所帮助