java - 从 Java 代码执行 git rebase 交互

标签 java git rebase git-rebase

当从命令行使用git rebase --interactive时,您会在终端窗口中获​​得提交列表,然后修改它们并保存,此时rebase过程开始,然后您可以使用git commit --amendgit rebase -- continue重写历史记录

我正在尝试使用 Runtime.getRuntime().exec() 自动重写 Java 的整个历史记录,在另一个线程中,我打开并编辑位于 .git/rebase-merge/git-rebase-todo 的 todo 文件

问题是代码在执行 rebase 命令时停止

Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("git rebase --continue --root $TIP"); 

由于它正在等待编辑器停止,那么如何克服这个问题并强制启动 rebase 过程?

最佳答案

当 rebase 失败时, rebase 将停止并指示需要手动(交互式)项目才能继续。

鉴于 git rebase-interactive 只是构建一系列提交,您可以构建一个提交列表,然后调用一系列 gitcherry-pick sha,这本质上就是交互式 rebase 正在做的事情。

关于java - 从 Java 代码执行 git rebase 交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31202699/

相关文章:

java - 面向对象的Java : Better to extend a class or create a new instance of the subclass?

Java Swing 表树

git - 我可以直接在 GitHub 上恢复提交吗?

git - 这个 git log 输出显示了两个分支,就好像它们不是分支一样?请解释

git - 将 .gitattributes 文件中的 merge 规则应用于 git rebase 调用

java - 数字排序程序无法找到符号编译错误

java - 我正在尝试调整数组大小,但不断出现索引越界异常

git - GIT中的分支和远程有什么区别?

git - rebasing 分支,有自己的分支

git - 我可以多次 rebase 吗?