git - Git rebase:通过运行命令修复
问题描述
我在一个分支上,在我的分支之前有许多提交(在一条直线上)develop
,并且在每个提交消息中都是我正在处理的问题跟踪票的名称。现在我想通过每次提交重新设置基础并将该票证的名称更改为不同的票证,概念上类似于:
perl -pi -e 's/BB-123/BB-456/' .git/COMMIT_EDITMSG
有没有办法告诉 rebase 的reword
操作,而不是打开交互式编辑器,而是要在消息文本上运行命令?
我想出的最好的办法是exec
在每次提交运行git commit --amend
并将$EDITOR
变量更改为上述命令或其他内容之后执行一个操作,但这非常可怕。
如果没有一个好的自动解决方案,我通常会reword
在每次提交时执行一个操作并手动编辑所有消息。
解决方案
是:当交互式变基打开编辑器时,它会根据不同的环境设置打开一个:
GIT_SEQUENCE_EDITOR
用于运行命令,但是GIT_EDITOR
用于改写操作。
(如果其中一个没有设置,Git 会像往常一样回退到sequence.editor
或core.editor
内置编辑器。您可以暂时更改这些设置,但环境变量更容易。)
因此,您可以使用:
GIT_SEQUENCE_EDITOR=script1 GIT_EDITOR=script2 git rebase -i <arguments>
wherescript1
替换edit
为reword
, 并且script2
是s/BB-123/BB-456/
你想要的,例如。
推荐阅读
- c++ - 处理左值和右值引用的所有可能组合
- javascript - 更新变量后更新 DOM
- if-statement - awk if 语句中的问题
- html - 将列表项均匀地居中对齐
- python - 标签调整大小不正确 tkinter
- php - 如何转换为 json 学说关联 ArrayCollection
- python-3.x - 非常简单的全标量情况下的 TensorFlow 形状问题
- python - 更快地接近 3 和 5 的倍数
- php - 带有python naoqi的PHP shell_exec:“qimessaging.socketcache:过滤后没有更多可用的端点”
- java - 编译测试库不编译接口的静态方法(Java 8)