使用Git将我的最后一次X提交压缩
如何使用Git将我最后的X提交压缩成一个提交?
没有找到相关结果
已邀请:
19 个回复
坊岔埠绵
并在第二次及后续提交中用“壁球”或“修正”替换“选择”。 在此示例中,
是SHA1哈希值或当前分支的HEAD的相对位置,从中为rebase命令分析提交。例如,如果用户希望在过去查看当前HEAD的5次提交,则命令为
。
曝匿弄罚
或
,你可以相当容易地做到这一点。在这个例子中,我们将压缩最后3次提交。 如果要从头开始编写新的提交消息,这就足够了:
如果你想用现有提交消息的串联开始编辑新的提交消息(即类似于pick / squash / squash / ... /squash
指令列表将启动你),那么你需要提取这些消息和将它们传递给
:
这两种方法都以相同的方式将最后三次提交压缩成一个新的提交。软复位只是将HEAD重新指向您不想压缩的最后一次提交。软复位不会触及索引和工作树,使索引处于新提交所需的状态(即,它已经具有您即将“扔掉”的提交的所有更改)。
辅奈
,这比ѭ6更优雅。假设您是主人,并且您希望将最后12次提交压缩为一次。 警告:首先确保你的工作检查
是干净的(因为
将丢弃分阶段和未分阶段的更改) 然后:
的文档更详细地描述了
选项。 更新:克里斯·约翰森(Chris Johnsen)在他的回答中建议的这种方法唯一真正优于简单的
,你得到的提交信息预填充了你正在压缩的每个提交消息。
苏髓骗撩
- 特别是对于Git-novices。除非你真的需要基于一些提交自动化一个进程,否则有一种不那么奇特的方式...... 将待压缩的提交放在工作分支上(如果它们还没有) - 请使用gitk 检查目标分支(例如'master')
提交消息将根据壁球预先填充。
土投
...或使用Windows的命令提示符:
你的
现在应该包含这个别名:
用法:
...自动压缩最后的
提交,包括在内。 注意:结果提交消息是所有压缩提交的组合,按顺序。如果您对此不满意,您可以随时手动修改它。 (或者,编辑别名以符合您的口味。)
陈獭
这很方便,因为即使您在没有跟踪信息/远程仓库的本地分支上也能正常工作。 该命令将打开交互式rebase编辑器,然后允许您按正常方式重新排序,压缩,重写等。 使用交互式rebase编辑器: 交互式rebase编辑器显示最后三次提交。运行命令
时,此约束由
确定。 最新的提交,
,首先显示在第1行。以
开头的行是注释/文档。 显示的文档非常清楚。在任何给定的行上,您可以将命令从
更改为您选择的命令。 我更喜欢使用命令
,因为这会将提交的更改“压缩”到上面一行的提交中,并丢弃提交的消息。 由于第1行的提交是
,在大多数情况下,你将其保留为
。 你不能使用
或
,因为没有其他提交来压缩提交。
剃摧庭峨僳
的功能: 打开TortoiseGit上下文菜单 选择
在日志视图中标记相关提交 从上下文菜单中选择
此函数自动执行所有必需的单个git步骤。 不幸的是只适用于Windows。
响摔衅幸
马口
n(此处为4)是最后一次提交的次数。然后你有以下选择,
更新如下,
有关详细信息,请单击链接 祝好运!!
梦话快家腹
这里甚至
也可用于获得短哈希。 2)如果你想压缩(合并)最后两次提交
3)这打开了一个用于合并的
编辑器。它看起来像下面
4)将
重命名为
,它出现在
之前。重命名后应该如下所示。
5)现在保存并关闭
编辑器。按
并按
保存。然后按
退出编辑器。 6)然后
编辑器再次打开以更新注释,如有必要,请更新它。 7)现在它成功压扁,您可以通过检查日志来验证它。
8)现在推动回购。注意在分支名称前添加
符号。这意味着强制推动。
注意:这是基于在
hell上使用git。如果您使用不同的操作系统(
或
),则除编辑器外,上述命令相同。你可能得到不同的编辑器。
惜堡沁戚
)克隆的远程分支(称为
),那么这是将您的提交压缩为一个的技术: 查看黄金回购
从中创建一个新分支(黄金回购),如下所示
壁球与您已经拥有的当地分支合并
提交你的更改(这将是dev-branch中唯一的提交)
将分支推送到本地存储库
谷起
的位置。最重要的是,找到你不想压缩的第一次提交的提交哈希。所以只有: 第1步:git rebase 在我的情况下执行
:
第2步:挑选/挤压你想要的东西 在我的情况下,我想在第一次提交的时候压缩所有内容。排序从头到尾,完全与
相反。在我的情况下,我想: 第3步:调整消息 如果您只选择了一个提交并压缩其余提交,则可以调整一个提交消息: 而已。一旦你保存了这个(
),你就完成了。看看
吧。
臀博
这将打开文本编辑器,如果您希望将这些提交合并在一起,则必须使用'squash'切换每个提交前面的'pick'。例如,如果您要将所有提交合并为一个,那么'pick'是您做的第一个提交,所有未来的提交(放在第一个提交之下)应设置为'squash'。如果使用vim,请在插入模式下使用:x来保存并退出编辑器。 然后继续改变:
有关此方法和其他重写提交历史记录的更多信息,请参阅此有用的帖子
瞧叮
翻译:为git提供一个新的“编辑器”,如果要编辑的文件名是
(交互式rebase提示),除了第一个“选择”改为“壁球”,否则会产生vim - 所以当你是提示编辑压缩的提交消息,你得到vim。 (显然我在分支foo上压缩了最后五次提交,但是你可以随意更改它。) 不过,我可能会做马克·朗格尔所建议的。
芭隘的盘石
藐刚
。 现在用
抬澈帅沮
然后,您已准备好提交所有更改。
泻伴墓荒
如果您还想使用压缩提交更新远程分支:
喷乡顾沥沪
在https://github.com/fleetwood-mac/band-history存储库的这个非常简短的历史记录中,您已经打开了一个拉取请求,将Bill Clinton提交合并到最初的(
)Fleetwood Mac提交中。 你打开了拉取请求,在GitHub上你看到了这个: 四个提交: 添加Danny Kirwan 添加Christine Perfect LA1974 比尔·克林顿 认为没有人会关心阅读完整的存储库历史记录。 (实际上有一个存储库,单击上面的链接!)您决定压缩这些提交。所以你去运行
。然后你把它onto91到GitHub来清理你的公关。 会发生什么?你刚刚从弗里茨到比尔克林顿做了一次提交。因为你昨天忘记了你正在研究这个项目的Buckingham Nicks版本。并且
与你在GitHub上看到的不一致。