gpt4 book ai didi

git - 在 git rebase 期间自动选择要编辑的 sha

转载 作者:行者123 更新时间:2023-12-04 03:17:06 24 4
gpt4 key购买 nike

我有一个包含几十个提交的分支,最近在 master 的基础上进行了重新设置。在冲突解决过程中出现了一些错误,现在其中有六个提交需要编辑。

可以通过以下方式找到需要编辑的 sha 列表:

$ git log --format=format:%H master..branch-in-question -- file/path

它可以与 git rebase -i 一起使用来单独选择每一个进行 edit (并且可能比花时间问这个问题更快,但我相信你们都明白)。我的问题是是否可以将 sha 列表从上面的 git log 传递到 git rebase 并让它自动选择那些提交以进行 edit.

最佳答案

我不知道有什么内置方法可以做到这一点,但我有一个解决方法应该 save you some time .

首先,启动交互式rebase:

git rebase -i

将第一次(且仅是第一次)提交的命令从 pick 更改为 edit,然后保存并退出。

运行此 脚本:

#!/bin/bash

for sha in $(git log --format=format:%H master..branch-in-question -- file/path)
do
sha=${sha:0:7}
sed -i "s/pick $sha/edit $sha/" .git/rebase-merge/git-rebase-todo
done

然后做:

git rebase --continue

这会立即暂停 rebase ,将您手动完成的编辑应用于待办事项文件,然后继续。

您无法提前创建待办事项文件,因为这样做会使 Git 假定您已经开始了 rebase 。


感谢@torek 的一些帮助,我有办法自动执行此操作。修改 脚本如下:

#!/bin/bash

# editor=$(git config --get core.editor);
# editor=${editor:-${VISUAL:-${EDITOR:-vi}}};
for sha in $(git log --format=format:%H master..branch-in-question -- file/path)
do
sha=${sha:0:7}
sed -i "s/pick $sha/edit $sha/" $@
done

# $editor $@

(如果你想在运行 rebase 之前修改待办事项文件,请取消注释 editor 行。)

然后,开始 rebase :

GIT_SEQUENCE_EDITOR=/path/to/script.sh git rebase -i

这将自动将您的命令输出的所有命令从pick更改为edit,无需手动更改第一个 promise 自己。


这两个版本的脚本都不允许您自定义运行什么命令来计算要使用的提交,但如果这是一个问题,您可以传入一个环境变量以允许此类自定义。

关于git - 在 git rebase 期间自动选择要编辑的 sha,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40116866/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com