问题标签 [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 投票
2 回答
3211 浏览

eclipse - 如何在 Eclipse 中 git 合并壁球

有时我需要从 Eclipse 中合并 squash。我知道我可以在命令行中完成,但是在 Eclipse 中集成图形选项将非常有用。你知道怎么做吗?

0 投票
2 回答
1427 浏览

github - Github repo squash 在 master 上提交

我正在使用 github 存储库,其中许多提交历史上都是“错误修复”、“这次真正的错误修复”、“确定最终错误修复”、“最终修复”。

这些都是直接提交给master的。我怎样才能压扁它们?

从他一年前的帖子开始——基本上听起来这很糟糕,想在 github 中压缩多个提交。过去一年有什么变化吗?

0 投票
2 回答
645 浏览

git - 在 git 中,如何在不合并的情况下提交到 master ?

TL;博士; 我想要一种方法告诉 git“master 有一个新版本,看起来与功能 A 的尖端完全相同,但没有历史记录”。

有没有办法做到这一点?

[更新:我现在有一个最小化这个问题的工作流程,但我仍然想知道如何告诉 git 执行以下操作:-

提交对分支 X 的单个更改,以使所有文件和文件夹与分支 Y 尖端的文件和文件夹匹配。这可能吗?]


背后的故事

我们通常避免从功能分支分支......但在这种情况下必须这样做。这是我们尝试做的:-

由于各种原因,我们总是挤到主人身上。但是由于特性 B 与特性 A 有很多共同的变化,第二个 squish 有很多合并冲突。

我试过这个...

(合并)很容易,并且功能 A 与我希望 master 拥有的文件集完全相同(因为功能 A 和 master 在合并到 master 后具有相同的文件)。这种合并很容易,因为 Git 知道只有在功能 B 分支后才需要解决冲突。

那时我想将现在合并的功能 A 分支提交给 master。但是我遇到了我试图避免的同样的冲突。

功能 A 具有我想要的所有更改...所以我可以检查主和功能 A 并将所有文件复制到主控中,然后提交。事实上这就是我最终做的......但肯定有办法用 git 做到这一点?!?

我尝试从masterfeature A生成一个二进制补丁,然后应用它。

这因“补丁不适用”错误而失败。

我尝试了其他各种合并尝试……所有这些都导致我不得不解决我已经重新解决的所有相同的合并冲突。


合并是从功能 B 到主控的痛苦的原因是,在功能 B 分支之前功能 A 中更改的文件在提交之前由功能 A 进一步更改。这意味着 Git 将这些文件视为功能 B 中的更改,但它们与功能 A 中提交的文件不同,因此需要合并。

在提交之前在 master 上重新设置功能 B 意味着您必须再次执行您未触及的文件的合并。

0 投票
1 回答
473 浏览

git - 在指定哈希之前进行非交互式修复

假设我有小时提交

没有未提交的更改。我想做的是以非交互方式将 , 之后的所有内容压缩first到其中。我想要相当于

这里我以四次提交为例,但实际的提交次数会有所不同。不过,我会知道提交的哈希,所以这就是我想要使用的。

搜索这个没有结果(我可能没有搜索正确的术语),因为我找到了很多解决方案,但从来没有找到这种确切的情况。

0 投票
1 回答
58 浏览

git - 在拉取请求期间修复 git 混乱

在 github 项目的拉取请求期间,我进行了大量的 git 提交。我被要求将所有提交压缩在一起,但是从那时起,我在 PR 进行时将合并、重置和意外合并到其他提交中,这令人难以置信。

我想要做的,只是将拉取请求中实际涉及的两个文件复制到另一个目录,重置回我为 PR 所做的第一次提交,重新粘贴我的新文件最新的更改,然后提交它们,这样 PR 就会显示一个提交。这可能吗?谢谢!

0 投票
1 回答
173 浏览

git - 如何将 git 提交历史压缩到 5 次提交之前

我的 repo 有大量的提交,我想压缩所有内容,直到最后五个提交 - 所以最后 repo 将有一个 squash 提交,然后是我最近的五个提交。

前:

后:

我在压缩部分的末尾和开头尝试了 git reset --soft ,但我不确定如何保留最后五个提交,当我在五个之前压缩部分时,这些提交就消失了。

0 投票
1 回答
8624 浏览

git - 在 sourcetree 中压缩两个以上的提交?

自从我上次推送到 origin/master 以来,我已经完成了大量的提交,大约 20 个。我从来没有超过一个分支,master,所有的提交都是在 master 上完成的。如何将所有 20 个提交压缩为一个提交,最好使用 sourcetree?我想这样做,所以我可以将一个提交推送到 origin/master。

在 sourcetree 中,我已经想出在存储库菜单中使用交互式 rebase 命令。它显示了我想要压缩的提交的确切列表。我尝试反复点击壁球按钮,直到它显示一个包含所有这些的提交。但是当我点击 OK 时,我最终只压缩了最近的两个提交。因此,即使对话框似乎显示它在实践中可以压缩多个,我也无法让它工作。

0 投票
2 回答
1197 浏览

git - 是否有可能恢复压缩提交的历史

这里是 Git 菜鸟。我将多个提交压缩为一个提交,并将单个提交推送到远程存储库。现在我想找回一些被压缩的提交。可能吗?

0 投票
1 回答
239 浏览

git - 在保留历史记录的同时覆盖 git 分支

我们的团队一直在并排开发一个项目的 2 个版本。

分支中的提交master基本上是对旧代码的错误修复,而v2setup分支包含完整的重写。

如果没有发生这些错误修复,我可以简单地将新分支压缩回主分支,但如果我没记错的话,现在只会导致恼人的冲突。

那么我该怎么做呢?

0 投票
1 回答
2042 浏览

git - Git:挤压不是最近提交的连续提交,并且不从根开始

我已经回顾了几个有关压缩最近提交压缩根提交的相关问题,但它们都不能帮助我压缩不在根目录下的非最近提交。

这是我的起始场景:

和我想要的结果:

其中,和,Z的 squash可以是任意长的非分支提交序列。F---G---HF---G---HD---EI---J

第一种方法:

我选择提交F---G---H的位置squash,同时将最旧的提交(rebase 交互中的第一行)保留为pick. 为什么这不起作用?

更新:在命令结束时,D作为EHEAD 提交正在进行 rebase。可以肯定的是,开始时没有正在进行的变基,并且git rebase --abort在再次运行时调用具有相同的结果。根据上面的链接,当我在根目录或 HEAD 执行此操作时,一切正常。

第二种方法:

我再次尝试[通过合并一个新分支(论坛上的最后一篇文章)][ http://git.661346.n2.nabble.com/Non-interactive-squash-a-range-td5251049.html)使用git checkout -b <clean-branch> <start-id> andgit合并 --squash `,但我得到以下信息:

这似乎有这个结果:

我有点难过,所以我怎样才能压缩这些提交?

最终,我计划在 中实现这个JGit,所以JGit实现也是可以接受的。

笔记

这里可能有重复,但没有答案,我认为这个问题有点不清楚。

更新

这是对@ryenus在下面的回答的回应:

樱桃挑选在提交时失败,在I2哪里。当它失败时,我的分支的状态一直是 ,直到樱桃挑选,然后是未提交的更改。调用会清除这些未提交的更改,并且我验证了提交是正确的,即. 提交之后,然后进行樱桃采摘,为什么樱桃采摘失败?I2I---I2---JworkD---E---Zgit cherry-pick --abortZF---G---HZF

似乎git cherry-pick I...J正在尝试樱桃挑选I2,这会产生合并冲突并失败。有什么建议么?

这是我的输出: