当我做git rebase --interactive
时,我有六个基本命令:pick
、reword
、edit
、squash
、fixup
和exec
。
pick
命令有什么作用?它是cherry-pick
提交还是checkout
提交?
来自帮助文章:
pick
pick
只是意味着包含提交。重新排列 pick 命令的顺序会更改变基时提交的顺序。如果选择不包含提交,则应删除整行。
为了完整起见,下面是其他命令:
reword
reword
命令类似于pick
,但在使用它后,变基过程将暂停并让您有机会更改提交消息。提交所做的任何更改都不受影响。edit
如果您选择edit
提交,您将有机会修改提交,这意味着您可以完全添加或更改提交。您还可以在继续变基之前进行更多提交。这允许您将大型提交拆分为较小的提交,或者删除提交中所做的错误更改。squash
此命令允许您将两个或多个提交合并为一个提交。提交被压缩到其上方的提交中。Git 让你有机会编写一条新的提交消息来描述这两个变化。fixup
这类似于squash
,但要合并的提交会丢弃其消息。提交只是合并到其上方的提交中,并且先前提交的消息用于描述这两个更改。exec
这允许您对提交运行任意 shell 命令。
根据实验,git 交互式变基中的 pick 命令的工作方式与git cherry-pick --ff相同。根据文档,其行为方式如下:
如果当前 HEAD 与挑选提交的父级相同,则将执行此提交的快进。
(见: https://git-scm.com/docs/git-cherry-pick (
在交互式变基中选择提交意味着 Git 使用相关提交所做的更改并使用原始元数据(消息、作者、日期等(提交它们。所以一个pick
看起来很像git cherry-pick
.
相反,pick
不会像git checkout
那样在提交时获取整个存储库的状态。只是提交所做的更改。
Pick 用于包含提交。
默认情况下,您将获得一个您选择变基的提交的目录。目录按日期升序排序。重新排列 pick 命令的顺序会更改启动变基时提交的顺序。
它只是按原样使用提交 - 也就是说,不会对其进行任何修改。
选取(简称 P(是默认操作。在这种情况下,它将 按原样重新应用提交,其内容或消息没有变化