编辑:
原来是编辑器 VIM 难用,而不是命令。我发布了一个如何退出 VIM 编辑器的链接,供大家参考:
我知道这是一个非常新手的问题,但是在我阅读教程的所有地方,他们只是说以交互模式打开,选择这个,挤压那个然后保存并退出。我无法做任何这些事情。任何人都可以用外行的方式解释,如何处理这个问题?
顺便说一句,我特别在谈论命令,git rebase -i branch
模式如下所示:
编辑:
原来是编辑器 VIM 难用,而不是命令。我发布了一个如何退出 VIM 编辑器的链接,供大家参考:
我知道这是一个非常新手的问题,但是在我阅读教程的所有地方,他们只是说以交互模式打开,选择这个,挤压那个然后保存并退出。我无法做任何这些事情。任何人都可以用外行的方式解释,如何处理这个问题?
顺便说一句,我特别在谈论命令,git rebase -i branch
模式如下所示:
To squash 意味着结合。在 squash 的帮助下,你可以在你的 git repo 中合并最后 X 次提交。
让我们通过一个简单的例子来理解这一点
使用在任何无用的 git 目录中创建 4 个文件 fileA、fileB、fileC、fileD
触摸文件A文件B文件C文件D
如果您检查git status
,您可以看到这些新创建的文件。
现在添加文件如下
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 添加