我正处于交互式变基的中间。是否有一个命令显示我在启动rebase时最初选择的提交列表?
答案 0 :(得分:5)
在交互式rebase期间,git更新子目录.git
下的rebase-merge
目录中的文件(git的各种版本的确切路径已经改变,我记得;我' m现在看看git 2.0.x的行为。)
在该目录中有文件done
和git-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"在互动的篮板期间。
见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 1795993,commit d8ae6c8,commit 0cce4a2,commit 313a48e,commit d80fc29,commit 8dccc7a(2017年12月5日)和{{3} },commit 7dcbb3c,commit 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
" mode(stripspace
:尊重存储库配置,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
目录来修复它。