【问题标题】:Rebase a branch checked out from another branch onto master without dragging first branches' commits将从另一个分支签出的分支重新设置到 master 上,而不拖动第一个分支的提交
【发布时间】:2018-10-15 20:53:26
【问题描述】:

我正在与 git 的特殊情况作斗争。

简而言之,我正在尝试对从 origin/master 签出的另一个分支 (feature/basic-tracking) 签出的分支 (feature/tracking-refactor) 进行变基。

合并feature/basic-training 后,我想将feature/tracking-refactor 重新定位到master 上,而不是将feature/basic-training 提交到新的origin/master 上。

下面是我的情况的更图形表示。假设我有一个如下的 git log 图作为起点。

而且,在一个成功的拉取请求将feature/basic-tracking 合并到 master 之后,我目前处于这种情况。

但是,当我尝试将 feature/tracking-refactor 重新定位到 master 以便拥有类似干净的日志历史记录时,我实际上也在从 feature/basic-tracking 拖动每个提交。我只想重新设置 feature/tracking-refactor 提交,例如仅使用 (d0875g 和 ee68b9t) SHA 的提交。

我的工作是从origin/master 创建一个新分支,并从feature/tracking-refactor 分支中挑选每个提交。但我希望有一个更优雅的选择。谢谢!

【问题讨论】:

  • 搜索rebase --onto
  • 您能举例说明我目前的情况如何运作吗?
  • 我没有时间正确地写出来,但本质上,git rebase --onto 可以让你分开目标和截止。这里的目标是origin/master,截止日期是提交c15t43f(尽管t不是提交哈希ID中的有效字符!)。
  • @torek 我亲手写的,别指望它完美无瑕...

标签: git rebase


【解决方案1】:

git rebase --onto。这种方式可能很难:git rebase --onto target-branch discard-branch branch-to-rebase。因此,discard-branch 将告诉 rebase 的修订不会在 rebase 操作上执行。在你的情况下(如果我理解正确的话):

git rebase --onto origin/master feature/basic-training feature/tracking-refactor

实际上,如果 feature/basic-training 已经合并到 origin/master,你可以这样做:

git checkout feature/tracking-refactor
git rebase origin/master

或者

git rebase --onto origin/master origin/master feature/tracking-refactor

希望它有效。

【讨论】:

    猜你喜欢
    • 2011-05-06
    • 1970-01-01
    • 2012-09-02
    • 2018-08-12
    • 2022-11-09
    • 2015-08-08
    • 1970-01-01
    • 1970-01-01
    • 2021-04-10
    相关资源
    最近更新 更多