当从命令行使用git rebase --interactive
时,您会在终端窗口中获得提交列表,然后修改它们并保存,此时rebase过程开始,然后您可以使用git commit --amend
和git 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/