Git 重新设置单个提交头的基础

Git 重新设置单个提交头的基础,git,rebasing,Git,Rebasing,我想重新设定一个给定的承诺,成为我目前的分支机构负责人。当然,我可以使用git-rebase-I~,然后将其向下移动到HEAD(如中所述),但我想自动化这个过程 有没有一个简洁的方法可以做到这一点 谢谢不太感谢。Interactive rebase是唯一一个设计用于实现这类功能的工具。不过,假设您可以编写以下脚本: 编写一个脚本,从作为第一个参数传递的文件中读取rebase-i指令列表,该文件通常是在编辑器中自己编辑的文件,然后将重新排序的列表写回该文件 告诉Git在启动交互式rebase时将

我想重新设定一个给定的承诺,成为我目前的分支机构负责人。当然,我可以使用
git-rebase-I~
,然后将其向下移动到HEAD(如中所述),但我想自动化这个过程

有没有一个简洁的方法可以做到这一点


谢谢

不太感谢。Interactive rebase是唯一一个设计用于实现这类功能的工具。不过,假设您可以编写以下脚本:

  • 编写一个脚本,从作为第一个参数传递的文件中读取
    rebase-i
    指令列表,该文件通常是在编辑器中自己编辑的文件,然后将重新排序的列表写回该文件
  • 告诉Git在启动交互式rebase时将该脚本用作编辑器,以便它用于重写rebase指令,而不是让您手动编辑它们
如果您安装了GNU sed(其他版本的sed通常不支持
-i
标志),那么以下功能应该可以工作:

GIT_SEQUENCE_EDITOR=“sed-i-e'1{h;d};${p;g}'”GIT-rebase-i~
git-rebase-commit-id


这个命令为你做了工作。

也许考虑看Cyt Poice?嗯,提交已经在我的分支中了,在这个例子里,樱桃会做什么?哦,我明白了。它不在树眼的其他地方,我想对提交进行重新排序,以使特定的提交位于顶部。这样做的目的是什么?一般来说,您应该使用
GIT_序列编辑器
,而不是
GIT_编辑器
,以便只影响
pick
命令的编辑。当然,只要pick命令中没有一个变成
edit
squash
,就没有关系,因为Git不会在同一进程会话期间运行
$Git\u EDITOR
GIT_SEQUENCE_EDITOR="sed -i -e '1 {h; d}; $ {p; g}'" git rebase -i <commit>~