如何在Git交互模式下工作?

时间:2017-07-27 18:13:31

标签: git git-rebase git-interactive-rebase

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

BTW,我特别谈到命令git rebase -i branch,模式看起来像这样:

enter image description here

1 个答案:

答案 0 :(得分:0)

压扁意味着结合。在壁球的帮助下,您可以在git仓库中组合最后的X提交。

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

  1. 使用

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

    触摸fileA fileB fileC fileD

  2. 如果您选中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"
      
    2. 如果您执行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添加