是否可以执行以下操作?
- 使
git rebase --interactive
仅将标准样板文件输出到文件,而不是输出到文件并在编辑器中打开它。 - 让用户编辑文件。
- 让用户使用编辑后的文件名重新运行
git rebase
。 - 继续执行通常的 rebase 过程。
用例:当然是脚本化 rebase 。参见 how to re-order commits in Git non-interactively例如。
最佳答案
经过一些思考和研究,答案很简单:git rebase -i
从众所周知的 EDITOR/VISUAL 环境变量中获取编辑器名称,因此覆盖它以指向非交互式脚本即可完成工作。
但是,EDITOR/VISUAL 无差别地应用于提交列表、改写时的提交消息和其他任何内容。所以,因为 http://git.kernel.org/?p=git/git.git;a=commit;h=821881d88d3012a64a52ece9a8c2571ca00c35cd ,有一个特殊的环境变量 GIT_SEQUENCE_EDITOR 只适用于提交列表。
因此,重新排序或展平提交的方法是:
运行:GIT_SEQUENCE_EDITOR=<script> git rebase -i <params>
.
你的<script>
应该接受一个参数:包含标准 rebase 提交列表的文件的路径。它应该就地重写并退出。通常的 rebase 处理在那之后发生。
关于git - 如何以非交互方式运行 git rebase --interactive?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12394166/