git - 如何以非交互方式运行 git rebase --interactive?

标签 git scripting git-rebase non-interactive

是否可以执行以下操作?

  1. 使 git rebase --interactive 仅将标准样板文件输出到文件,而不是输出到文件并在编辑器中打开它。
  2. 让用户编辑文件。
  3. 让用户使用编辑后的文件名重新运行 git rebase
  4. 继续执行通常的 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/

相关文章:

Git 将多个分支克隆到同一个本地目录可能吗?

svn - 如何创建一个分支为 "subproject"的 git clone?

ios - 使用 git 开发一个 iphone 应用程序。不得共享的​​文件?

linux - 安全删除 Bash 环境变量

git - 如何在不计算提交的情况下以交互方式隔离地重新设置 git 主题分支?

git - 撤消 git rebase

git - Git上的Drupal,数据库怎么办?

java - WEKA 无法确定结构为 arff

scripting - Adobe Premiere 脚本

GIT 在 rebase 期间创建无关的 ~HEAD 文件