问题标签 [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.
git - 有没有办法简单地使用交互式变基预先提交提交?
假设我有一个基于 master 的分支,以合并提交结束:
X
在交互式 rebase之间添加提交D
很E
简单 - 我运行
git rebase -i master
,将提交D
操作设置为edit
,变基后变基停止D
。我只是在那一刻创建新的提交,然后继续变基。分支现在看起来像
...C<master]---D---X---E'---F'<my_freature]
.
现在我想在C
and之间添加一个提交D
。期望的结果:
C<master]---X---D'---E'---F'<my_freature]
我试过
git rebase -i master~
我想将合并提交设置C
为edit
,但交互式 rebase 以某种方式忽略了合并提交C
并只为我提供链A--B--D--E
,因此 rebase 会导致合并提交丢失C
。
有没有一种简单的方法可以像这样使用交互式 rebase 向分支提交提交?
请注意,我可以想出一个更复杂tmp
的解决方案,比如在 上创建新分支master
,提交X
它然后变基my-feature
到tmp
,我只是好奇是否有一种简单直接的交互式变基方法。
git - git interactive rebase squash 创建了全新的分支
这是我简单直接历史的最后一部分的图片(来自 SourceTree,时间从底部到顶部):
因此,在这种情况下,我要求 SourceTree 对最底部提交(“Xcode 10.2,Swift 5”)的子项进行交互式变基,因为我想折叠接下来的两个提交(“该死,属性列表编码”和“ v1.1.1build24") 到单个提交中。没有遥控器,所以我可以自由地重写历史并保持它的清洁和信息量。
但是当我这样做时,从“Xcode 10.2,Swift 5”分支创建了一大堆新的提交——现有提交链的副本。我不明白为什么,我花了很多时间来清理它。
它不完全是一个新的“分支”(正如我的问题标题所言);但是通过“v1.1.2build28”的现有提交最终在他们自己的死胡同分支线上,master
现在有这些新的提交,复制这些提交但没有标签和今天的日期。
我的问题是:为什么会发生这种情况,我应该怎么做?
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
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
git - 在 Git 中变基时 COMMIT 会丢失什么?
使用提交哈希注释掉行与使用 DROP 关键字相同吗?
我想重新设置我的拉取请求,以便它只提交一个提交。
git - 将“修复”提交重新设置为先前的合并提交
我执行了以下合并:
但我注意到 E 中的一些问题,并在 F 中修复了它们:
我想修改提交E
,使其包含在F
.
当我尝试git rebase -p -i HEAD~2
时,它会尝试创建一个常规(非合并)提交,甚至试图让我重新解决我在执行合并时已经解决的冲突E
。
如何修复提交E
以使其包含在 中所做的更改F
?
git - Git:将Master的提交历史替换为功能分支的历史
我是 Git 中交互式变基的新手,所以我创建了一个分支,我可以在其中压缩提交 ( squash-branch
),以防万一我毁了某些东西。我没有更改分支上的任何文件,只是更改了历史记录。我合并了分支以master
期望它将提交新的提交历史squash-branch
。
如何替换master
withsquash-branch
的历史记录的提交历史记录?换一种心情说,我想master
拥有squash-branch
的历史。
我已经尝试了两种强制覆盖master
的方法squash-history
。“我们的战略”和git branch -f master squash-branch
。
如果您需要更多详细信息,请通知!
谢谢!
git - 当我们使用交互式变基时,原始提交会发生什么?
我正在尝试交互式变基。假设我有一个带有 6 次提交的线性主分支,并且 HEAD 在第 6 次提交,并且我运行 git rebase -i HEAD~4 然后它允许我选择/编辑/拆分/压缩 HEAD 和最后 3 次提交。
一旦我执行任何操作并完成变基操作,它就会在 HEAD~4 之上重放提交。现在,这些有新的提交 ID,并且头部指向最近(选择的)提交。
我想知道原始提交到底发生了什么?它们是否已删除,是否可检索?
git - 运行交互式变基时,我之前的提交是哪一个?
当我运行类似我的提交列表的东西时,git rebase -i --rebase-merges eeb1425e0
我的提交列表是倒置的,即第一个提交是最后一个,最后一个提交是第一个:
然后,当 squash 选项显示时squash = use commit, but meld into previous commit
,我按squash
如下方式推送:
之前的提交B
is A
or C
? B
将与A
or合并C
/挤压?
相关:
git - 在交互式变基中删除/删除当前提交
我在一个交互式 rebase 中,并且在查看提交时已经标记了我需要仔细查看的提交edit
(e
),我意识到需要删除/删除一些提交。在交互模式下哪个是正确的提交?
目前我执行以下命令:
这是非常冗长的。所以我尝试了
但这会产生合并冲突。
那么在交互式变基的编辑模式下,删除当前提交的最简单方法是什么?