我知道这是一个非常新手的问题,但在我阅读教程的任何地方,他们只是说以交互模式打开,选择它,压缩然后保存并退出。我无法做任何这些事情。任何人都可以用非专业术语来解释,如何处理这个问题?
BTW,我特别谈到命令git rebase -i branch
,模式看起来像这样:
答案 0 :(得分:0)
压扁意味着结合。在壁球的帮助下,您可以在git仓库中组合最后的X提交。
让我们通过一个简单的例子来理解这个
使用
在任何无用的git目录中创建4个文件fileA,fileB,fileC,fileD触摸fileA fileB fileC fileD
如果您选中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
,则可以看到类似于以下内容的提交消息:
上次提交 - 已添加文件
第二次提交 - 添加了fileC
第三次提交 - 添加了fileB
第4次提交 - fileA已添加
现在要压缩第2次,第3次和第4次最后一次提交。你可以这样做:
git rebase -i HEAD~4
您可以看到类似这样的内容(观察该顺序与git log输出相反):
选择d16e7b5 添加文件
选择221b175 添加文件
选择8006a22 fileC添加
选择4fb6454 添加文件
第4次最后一次提交显示在顶部,然后是第3次提交,依此类推。
我们的目标是压制第二次,第三次和第四次提交。为此你可以用壁球来挑选如下:
选择d16e7b5 fileA添加
壁球 221b175 fileB添加
壁球 8006a22 fileC已添加
选择4fb6454 fileD添加
保存后,您可以找到第2次,第3次和第4次提交将被合并(压扁)。在上面的例子中,你永远不需要使用壁球用于 d16e7b5 ,因为这是第一次在rebase中提交,之前没有你提供的提交。
git log
会告诉您:
上次提交 - 添加了fileD
2ns最后一次提交 - " FileA添加了
FileB added
FileC added"
我怀疑你必须在第一次提交时使用壁球,这就是为什么它不起作用
注意:如果您尝试此示例,以下情况总是会给您错误。
壁球 d16e7b5 fileA已添加
选择221b175 fileB添加
选择8006a22 fileC添加
选择4fb6454 fileD添加