压缩(已推送)GitLab 上的提交

use*_*407 8 git github squash gitlab git-squash

我有一个包含 5 次提交的合并请求,全部推送到 GitLab 上的分支。我想将这 5 次提交压缩为 1 次——但是其他人对存储库进行了中间提交。例如,在 git log 中,您可能会看到

my5thcommitsha
my4thcommitsha
someoneelse'scommitsha
someoneelse'scommitsha
my3rdcommitsha
my2ndcommitsha
my1stcommitsha
Run Code Online (Sandbox Code Playgroud)

我已经将我的分支重新设置为我尝试合并到的存储库主分支上的最新提交。

现在,我只想压缩我的 5 次提交,这样 GitLab 上的内容就更干净了——我该怎么做呢?

合并按钮旁边的“squash commits”复选框是否会创建单个提交,还是会创建两个提交(1 个提交包含我的 5 个提交,+ 一个合并提交)?

Ada*_*all 1

合并请求上的“压缩提交”复选框将在合并到目标之前压缩分支上的每个提交,因此示例中的所有 7 个提交将成为一个提交,然后将其合并。一次提交将在其提交消息中包含提交 sha 和压缩提交的标题。

将所有提交压缩为单个提交的唯一方法是同时压缩其他人的提交(但这可能没问题,具体取决于您的情况和其他人)。另一种选择是“修复”您的提交,这就像挤压一样,但原始提交实际上被遗忘了(它们不会在最终提交的消息中提及)。

因此,如果您“修复”了最后两个提交,即 my5thcommitsha(和 4th),它们的更改将成为“someoneelse'scommitsha2”更改的一部分。然后,您可以修复您的第三次和第二次提交,因此它们的更改是您第一次提交的一部分。这样,您的历史记录将类似于:

someoneelse's2ndcommitsha
someoneelse's1stcommitsha
my1stcommitsha
Run Code Online (Sandbox Code Playgroud)