问题标签 [git-interactive-rebase]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
66 浏览

git - 有没有办法简单地使用交互式变基预先提交提交?

假设我有一个基于 master 的分支,以合并提交结束:

X在交互式 rebase之间添加提交DE简单 - 我运行

git rebase -i master

,将提交D操作设置为edit,变基后变基停止D。我只是在那一刻创建新的提交,然后继续变基。分支现在看起来像

...C<master]---D---X---E'---F'<my_freature].

现在我想在Cand之间添加一个提交D。期望的结果:

C<master]---X---D'---E'---F'<my_freature]

我试过

git rebase -i master~

我想将合并提交设置Cedit,但交互式 rebase 以某种方式忽略了合并提交C并只为我提供链A--B--D--E,因此 rebase 会导致合并提交丢失C

有没有一种简单的方法可以像这样使用交互式 rebase 向分支提交提交?

请注意,我可以想出一个更复杂tmp的解决方案,比如在 上创建新分支master,提交X它然后变基my-featuretmp,我只是好奇是否有一种简单直接的交互式变基方法。

0 投票
2 回答
273 浏览

git - git interactive rebase squash 创建了全新的分支

这是我简单直接历史的最后一部分的图片(来自 SourceTree,时间从底部到顶部):

在此处输入图像描述

因此,在这种情况下,我要求 SourceTree 对最底部提交(“Xcode 10.2,Swift 5”)的子项进行交互式变基,因为我想折叠接下来的两个提交(“该死,属性列表编码”和“ v1.1.1build24") 到单个提交中。没有遥控器,所以我可以自由地重写历史并保持它的清洁和信息量。

但是当我这样做时,从“Xcode 10.2,Swift 5”分支创建了一大堆新的提交——现有提交链的副本。我不明白为什么,我花了很多时间来清理它。

它不完全是一个新的“分支”(正如我的问题标题所言);但是通过“v1.1.2build28”的现有提交最终在他们自己的死胡同分支线上,master现在有这些新的提交,复制这些提交但没有标签和今天的日期。

我的问题是:为什么会发生这种情况,我应该怎么做?

0 投票
2 回答
1496 浏览

git - 为什么最近, git rebase -i squash 导致头部分离

为什么 git rebase -i with squashes 最近会导致头部分离?它曾经用交互式 rebase 的结果更新我当前的分支。如何获得交互式 rebase 以停止去分离的 HEAD?

在从远程存储库中提取之前,我总是使用 git rebase -i 来压缩我的提交,以简化处理来自 git pull 的任何合并冲突。不必解决可能的多个提交的冲突,我只需要解决一个提交。

我使用的示例命令

在 vim 中编辑 rebase 交互后:

编辑并保存提交后的输出:

这与类似的帖子 git rebase -i development HEAD 导致分离头不同 ,因为提问者想知道如何解决该 ONE 实例的问题。答案是git checkout -b branchName。在这个问题中,我想知道为什么它最近开始发生在我身上,以及如何为所有 FUTURE 实例解决它。

这与类似的帖子git rebase -i with squash cannot detach HEAD不同,因为存在错误消息could not detach HEAD

0 投票
1 回答
40 浏览

git - Git - 如何用任何其他提交压缩最后一次提交

考虑以下本地分支上的一系列提交:

我想用 3 压缩 5 以获得:

我可以使用交互式变基来做到这一点吗?从我所看到的(例如:https ://www.internalpointers.com/post/squash-commits-into-one-git )和迄今为止的测试来看,我只能通过一系列直接提交来压缩 5,例如:

  • 4
  • 4 3
  • 4 3 2
  • 4 3 2 1
0 投票
3 回答
271 浏览

git - 在 Git 中变基时 COMMIT 会丢失什么?

使用提交哈希注释掉行与使用 DROP 关键字相同吗?
我想重新设置我的拉取请求,以便它只提交一个提交。

0 投票
1 回答
197 浏览

git - 将“修复”提交重新设置为先前的合并提交

我执行了以下合并:

但我注意到 E 中的一些问题,并在 F 中修复了它们:

我想修改提交E,使其包含在F.

当我尝试git rebase -p -i HEAD~2时,它会尝试创建一个常规(非合并)提交,甚至试图让我重新解决我在执行合并时已经解决的冲突E

如何修复提交E以使其包含在 中所做的更改F

0 投票
1 回答
96 浏览

git - Git:将Master的提交历史替换为功能分支的历史

我是 Git 中交互式变基的新手,所以我创建了一个分支,我可以在其中压缩提交 ( squash-branch),以防万一我毁了某些东西。我没有更改分支上的任何文件,只是更改了历史记录。我合并了分支以master期望它将提交新的提交历史squash-branch

如何替换masterwithsquash-branch的历史记录的提交历史记录?换一种心情说,我想master拥有squash-branch的历史。

我已经尝试了两种强制覆盖master的方法squash-history。“我们的战略”和git branch -f master squash-branch

如果您需要更多详细信息,请通知!

谢谢!

0 投票
1 回答
58 浏览

git - 当我们使用交互式变基时,原始提交会发生什么?

我正在尝试交互式变基。假设我有一个带有 6 次提交的线性主分支,并且 HEAD 在第 6 次提交,并且我运行 git rebase -i HEAD~4 然后它允许我选择/编辑/拆分/压缩 HEAD 和最后 3 次提交。

一旦我执行任何操作并完成变基操作,它就会在 HEAD~4 之上重放提交。现在,这些有新的提交 ID,并且头部指向最近(选择的)提交。

我想知道原始提交到底发生了什么?它们是否已删除,是否可检索?

0 投票
1 回答
85 浏览

git - 运行交互式变基时,我之前的提交是哪一个?

当我运行类似我的提交列表的东西时,git rebase -i --rebase-merges eeb1425e0我的提交列表是倒置的,即第一个提交是最后一个,最后一个提交是第一个:

然后,当 squash 选项显示时squash = use commit, but meld into previous commit,我按squash如下方式推送:

之前的提交Bis Aor C? B将与Aor合并C/挤压?

相关:

  1. 如果我已经开始变基,如何将两个提交合并为一个?
  2. git 的“rebase --preserve-merges”到底做了什么(为什么?)
0 投票
2 回答
60 浏览

git - 在交互式变基中删除/删除当前提交

我在一个交互式 rebase 中,并且在查看提交时已经标记了我需要仔细查看的提交edite),我意识到需要删除/删除一些提交。在交互模式下哪个是正确的提交?

目前我执行以下命令:

这是非常冗长的。所以我尝试了

但这会产生合并冲突。

那么在交互式变基的编辑模式下,删除当前提交的最简单方法是什么?