问题标签 [squash]

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 投票
9 回答
178689 浏览

git - 压缩 Git 中的前两个提交?

你可以将git rebase --interactive <commit>任意数量的提交压缩成一个。

除非您想将提交压缩到初始提交中,否则这一切都很好。这似乎是不可能的。

有什么方法可以实现吗?


中度相关:

在一个相关的问题中,我设法提出了一种不同的方法来解决第一次提交的压缩需求,也就是说,使它成为第二次提交。

如果您有兴趣:git:如何将提交作为第一个插入,然后转移所有其他提交?

0 投票
8 回答
102175 浏览

git - 你如何使用 git format-patch 将提交压缩到一个补丁中?

我在一个分支上有八个提交,我想通过电子邮件发送给一些还没有 git 开明的人。到目前为止,我所做的一切要么给了我 8 个补丁文件,要么从一开始就开始给我分支历史中每个提交的补丁文件。我使用 git rebase --interactive 来压缩提交,但现在我尝试的一切从一开始就给了我无数的补丁。我究竟做错了什么?

0 投票
20 回答
335208 浏览

git - 如何将所有 git 提交压缩为一个?

您如何将整个存储库压缩到第一次提交?

我可以重新提交到第一次提交,但这会给我留下 2 次提交。有没有办法在第一个提交之前引用提交?

0 投票
6 回答
29551 浏览

git - git rebase 交互式:将提交合并到一起

我想有一个简单的解决方案来在交互式 rebase 期间将两个合并提交压缩在一起。

我的存储库看起来像:

也就是说,我有一个my-feature最近合并了两次的分支,中间没有真正的提交。我不只是想重新设置my-feature分支,因为它是它自己的已发布分支,我只想将最后两个合并提交合并为一个(尚未发布这些提交)

我试过了:

但我得到了:

我最后做的是:

现在,新的合并提交不再被视为合并提交(它只保留了第一个父级)。所以:

但是如果我有很多提交,这可能会变得复杂,你有更好的解决方案吗?谢谢。

米尔德里德

0 投票
4 回答
223190 浏览

git - 合并 --squash 和 rebase 有什么区别?

我是 git 新手,我试图了解 squash 和 rebase 之间的区别。据我了解,您在进行变基时会执行壁球。

0 投票
2 回答
262 浏览

ruby - 删除/压缩垂直散列中的条目

我有一个表示 X、Y 矩阵的网格,在此处存储为哈希。

XY 矩阵上的一些点可能有值(作为字符串类型),而另一些可能没有。

典型的网格可能如下所示:

不过,我需要做的基本上是删除所有空条目。

假设 [17,3] => Raphael 在 if 前面没有元素(假设 - 没有 [16,3] 存在)那么 [17,3] 应该变成 [16,3] 等等。

所以基本上所有的空项目都会从散列的垂直(行)结构中弹出。

是否有我应该看看的功能,或者是否有一种简单的类似壁球的方法可以删除空白并调整和移动其他项目?

在此先感谢您的帮助。

0 投票
1 回答
617 浏览

git - 大规模 git 提交压缩

我的公司正在从 CVS 转换为 git。我们在 CVS 上已经有很长时间了,所以历史悠久。手工做的太多了。

查看日志,可以进行很多压缩。一大堆。我想做的是挂钩一个脚本,它将比较两个相邻的提交。如果它返回 true,则连接提交消息并压缩提交。我也会对接受两个提交和一个提交消息的命令感到满意,然后将它们压缩在一起。

git rebase --interactive 接近我需要的,但是“壁球”需要太多的手动干预。我还研究了使用“fixup”而不是 squash,但我不想丢失提交消息。

有任何想法吗?

0 投票
1 回答
179 浏览

git - 如何制作分支的副本以测试变基?

我之前通过创建一个克隆并在克隆中执行 rebase 来完成此操作,但我怀疑我可以在单独的分支上安全地执行此操作。

我有一个功能分支feat-x,上面有大约 25 个提交。我想(安全地)将其中的几个压缩在一起。

(我说“安全”是因为前几次我压扁的时候我没有把它弄好——但是在克隆中工作,所以把它扔掉,直到我想出正确的咒语。)

什么样的命令序列会给我feat-x-exp一个副本,feat-x这样我就可以在不干扰的情况下尝试挤压feat-x

0 投票
1 回答
448 浏览

git - 在多台计算机上工作时如何安全地使用 git rebase?

我在两台不同的计算机(台式机笔记本电脑)上从事同一个项目。有时我需要在执行某些任务/功能时在它们之间进行转换。

所以我想在笔记本电脑上提交,然后将其传输(推/拉)到桌面并继续。然后,当功能完成时,我想进行新的提交,然后用半完成的提交将其压缩。

我现在如何在不混淆历史记录的情况下将其拉/推回笔记本电脑?

处理这个的正确方法是什么?这样做之后,我还必须能够发布提交。目前我正在直接在主分支上工作,但如果在单独的分支上工作有帮助,我会这样做。

我确实知道如何使用 git rebase -i,并且在同一台计算机上使用过几次都没有问题,因此您的答案不必包含 git rebase/squash 的详细信息。

0 投票
2 回答
1366 浏览

git - 将大块重组为提交

我对一些代码进行了重大的重构,在这个过程中我已经提交了几次。这还没有被推送到任何公共回购。在推送之前,我现在想将提交重新组织成逻辑单元。问题是我不仅要压缩提交,还要将大块头重组到其他提交中。

为了清楚起见,我用大块 A1、A2、A3 提交 A,并用大块 B1、B2、B3 提交 B。我想检查 A 之前的版本,并有新的提交 C 和大块 A1、A2、B2 和新的提交 D 和大块 B1、B3、A3。

提前致谢。