什么"选择"在Git的交互式rebase中做什么?

时间:2017-08-08 08:58:23

标签: git

当我执行git rebase --interactive时,我有六个基本命令:pickrewordeditsquashfixup和{{ 1}}。

exec命令有什么作用?它是pick提交还是cherry-pick它?

5 个答案:

答案 0 :(得分:1)

来自help article

  

<强> pick
  pick仅表示包含提交。重新排列pick命令的顺序会改变rebase正在进行时的提交顺序。如果您选择不包含提交,则应删除整行。

为了完整性,以下是其他命令:

  

<强> reword
  reword命令与pick类似,但在使用它之后,rebase进程将暂停,并为您提供更改提交消息的机会。提交所做的任何更改都不会受到影响   的 edit
  如果您选择edit提交,您将有机会修改提交,这意味着您可以完全添加或更改提交。在继续rebase之前,您还可以进行更多提交。这允许您将大型提交拆分为较小的提交,或者删除提交中的错误更改   的 squash
  此命令允许您将两个或多个提交组合到一个提交中。提交被压缩到它上面的提交中。 Git让您有机会编写描述这两种更改的新提交消息   的 fixup
  这与squash类似,但要合并的提交会丢弃其消息。提交只是简单地合并到它上面的提交中,并且先前的提交消息用于描述这两个更改   的 exec
  这允许您针对提交运行任意shell命令。

答案 1 :(得分:1)

在交互式rebase中选择提交意味着Git使用有问题的提交所做的更改,并使用原始元数据(消息,作者,日期等)提交它们。因此,单个@Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { NavUtils.navigateUpFromSameTask(this); } return super.onOptionsItemSelected(item); } 看起来很像pick

相反,git cherry-pickpick之类的提交时间内不会采用整个仓库的状态。只是提交所做的更改

答案 2 :(得分:1)

根据实验,git的交互式rebase中的 pick 命令与 git cherry-pick --ff 的工作方式相同。根据文档,这样做是这样的:

  

如果当前HEAD与cherry-pick'ed提交的父级相同,则将执行此提交的快进。

(见:https://git-scm.com/docs/git-cherry-pick

答案 3 :(得分:0)

Pick用于包含提交。

默认情况下,您将获得一个您选择要进行rebase的提交的目录。目录按日期按升序排序。重新排列pick命令的顺序会改变启动rebase时提交的顺序。

答案 4 :(得分:0)

它只是使用提交 - 也就是说,不会对它进行任何修改。

  

pick(简称p)是默认操作。在这种情况下它会   按原样重新应用提交,不更改其内容或消息