1

编辑:

原来是编辑器 VIM 难用,而不是命令。我发布了一个如何退出 VIM 编辑器的链接,供大家参考:

如何退出 Vim 编辑器?


我知道这是一个非常新手的问题,但是在我阅读教程的所有地方,他们只是说以交互模式打开,选择这个,挤压那个然后保存并退出。我无法做任何这些事情。任何人都可以用外行的方式解释,如何处理这个问题?

顺便说一句,我特别在谈论命令,git rebase -i branch模式如下所示:

在此处输入图像描述

4

1 回答 1

1

To squash 意味着结合。在 squash 的帮助下,你可以在你的 git repo 中合并最后 X 次提交。

让我们通过一个简单的例子来理解这一点

  1. 使用在任何无用的 git 目录中创建 4 个文件 fileA、fileB、fileC、fileD

    触摸文件A文件B文件C文件D

如果您检查git status,您可以看到这些新创建的文件。

  1. 现在添加文件如下

    git add fileA
    
    git commit -m "fileA added"
    
    git add fileB
    
    git commit -m "fileB added"
    
    git add fileC
    
    git commit -m "fileC added"
    
    git add fileD
    
    git commit -m "fileD added"
    

如果你这样做git log了,你可以看到类似于下面的提交消息:

最后一次提交 - 添加了 fileD

第二次最后提交- 添加了 fileC

第三次最后提交- 添加了 fileB

第 4 次最后提交- 添加了 fileA

现在要压缩第 2 次、第 3 次和第 4 次最后提交。您可以执行以下操作:

git rebase -i HEAD~4

您可以看到类似这样的内容(观察与 git log 输出比较的顺序相反):

选择 d16e7b5文件A 添加

选择 221b175 fileB 添加

选择 8006a22文件C 添加

选择 4fb6454文件D 添加

最后第四次提交显示在顶部,然后是第三次提交,依此类推。

我们的目标是压缩第 2 次、第 3 次和第 4 次最后提交。为此,您可以使用 squash 进行单词选择,如下所示:

选择 d16e7b5 文件A 添加

壁球221b175 fileB 添加

壁球8006a22 fileC 添加

选择 4fb6454 文件D 添加

保存后,您会发现第二次、第三次和第四次最后一次提交将被合并(压扁)。在上述情况下,您将永远不需要对d16e7b5使用 squash,因为这是 rebase 中的第一次提交,您之前没有提供任何提交。

git log将向您展示:

最后一次提交 - 添加了 fileD

2ns 最后一次提交 - " 添加了 FileA

                FileB added

                FileC added"

我怀疑您必须在第一次提交时使用壁球,这就是它不起作用的原因

注意:如果您在此示例中尝试,以下情况总是会给您错误。

squash d16e7b5 fileA 添加

选择 221b175 fileB 添加

选择 8006a22 文件C 添加

选择 4fb6454 文件D 添加

于 2017-07-28T06:17:41.300 回答