Git:显示交互式rebase期间的提交列表

时间:2014-08-20 08:18:19

标签: git rebase

我正处于交互式变基的中间。是否有一个命令显示我在启动rebase时最初选择的提交列表?

2 个答案:

答案 0 :(得分:5)

在交互式rebase期间,git更新子目录.git下的rebase-merge目录中的文件(git的各种版本的确切路径已经改变,我记得;我' m现在看看git 2.0.x的行为。)

在该目录中有文件donegit-rebase-todo。这些并不是你要求的:它们是成品零件和尚未完成的零件,而不是" pick"最初呈现给您的命令,也不一定是您已经使用过的命令(如果您跳过了一些命令)。还有一个git-rebase-todo.backup,其中包含" todo"编辑后的列表。我不确定您是否需要完整的转速列表或退出编辑器时选择的列表,但如果它是后者,则备份文件是正确的。

还有一个名为ORIG_HEAD的引用指向正在被重新命名的(原始)分支的尖端,而.git/rebase-merge/head-name包含分支的名称(并且分支未被移动)直到rebase完成)。您可以使用它以及其他一些文件来重建最初提供的" pick"列表。

答案 1 :(得分:2)

请注意,Git 2。3。0(2015年2月)将显示" todo"在互动的篮板期间。

commit 97f05f4

Onno Kortmann (onnokort)
  

显示交互式rebase的TODO项目数

     

在&{39; rebase -i'期间,长基础会话中的一次错误编辑可能会无意中丢弃提交/项目。
  此更改显示后面的注释中TODO个项目的总数   名单。
  执行rebase编辑后,可以比较总项数,以确保编辑中没有任何更改丢失。

git-rebase--interactive.sh现在包括(使用git stripspace):

todocount=$(git stripspace --strip-comments <"$todo" | wc -l)
cat >>"$todo" <<EOF
$comment_char Rebase $shortrevisions onto $shortonto ($todocount TODO item(s))

请注意,使用Git 2.16(2018年第一季度),交互式rebase将能够生成带有单字母命令名称的待办事项列表(如果设置了配置变量rebase.abbreviateCommands)。

请参阅commit 1795993commit d8ae6c8commit 0cce4a2commit 313a48ecommit d80fc29commit 8dccc7a(2017年12月5日)和{{3} },commit 7dcbb3ccommit f3b633d(2017年12月3日)commit 946a9f2 Liam Beguin (Liambeguin)于2017年12月27日Junio C Hamano -- gitster --合并)

  

rebase -i:学会缩写命令名

     

git rebase -i已经知道如何解释单字母命令   名。
  教它用这些相同的缩写生成待办事项列表   名。

commit 0da2ba4会显示:

rebase.abbreviateCommands::
     

如果设置为true,git rebase将在待办事项列表中使用缩写的命令名称,结果如下:

-------------------------------------------
    p deadbee The oneline of the commit
    p fa1afe1 The oneline of the next commit
    ...
-------------------------------------------
     

而不是:

-------------------------------------------
    pick deadbee The oneline of the commit
    pick fa1afe1 The oneline of the next commit
    ...
-------------------------------------------
     

默认为false


请注意,Git 2.21(2019年第一季度)会使&#34; git stripspace&#34;即使在git rebase config man page中,也可以在外部 git存储库中使用。

  

stripspace:允许-s / -c git存储库

之外      

"-s" or "-c" modestripspace:尊重存储库配置,2016-11-21,Git v2.11.0-rc3)通过教他们读取存储库来改进stripspace --strip-comments / --commentlines配置,但它有点太过分了:在任何存储库外运行stripspace时,结果是

$ git stripspace --strip-comments <test-input
 fatal: not a git repository (or any parent up to mount point /tmp)
     

这使得试验条带空间命令不必要地繁琐   通过一直按照预期轻轻地发现git目录来修复它。