Git 基于消息的挤压提交
在本地开发环境中使用push-to-deploy系统会产生大量提交,我不想将这些提交推到上游 我想要一种更快、更自动的方法,将自动生成的提交压缩到尚未生成的提交中。当我的日志看起来像:Git 基于消息的挤压提交,git,Git,在本地开发环境中使用push-to-deploy系统会产生大量提交,我不想将这些提交推到上游 我想要一种更快、更自动的方法,将自动生成的提交压缩到尚未生成的提交中。当我的日志看起来像: <<sha1>> (HEAD -> feature/in-development) Complete feature <<sha2>> AUTO_COMMIT <<sha3>> Add function foo() <<sh
<<sha1>> (HEAD -> feature/in-development) Complete feature
<<sha2>> AUTO_COMMIT
<<sha3>> Add function foo()
<<sha4>> AUTO_COMMIT
<<sha5>> AUTO_COMMIT
<<sha6>> Remove function bar()
“真实”提交之间的AUTO_COMMIT
COMMIT的数量是可变的(1-20左右)
我一直在通过手动重定基来实现这一点git-rebase--autosquash
看起来几乎就是我想要的,但是我自动生成的提交消息不包含所需的…
有没有更快的方法来挤压自动提交,或者我被手动重定基址卡住了 git rebase-i命令将打开编辑器来编辑各种
拾取
命令。好吧,你已经知道了,这没什么大不了的,但对你的问题也不是一个有用的答案,对吧?好吧,这就是诀窍:它实际上是有用的
它的有用之处在于,在pick
命令上打开的git-rebase-i
编辑器是与git的所有其他编辑器设置分开设置的。具体来说,Git使用sequence.editor
或$Git\u sequence\u editor
(如果设置了后者,则首选前者)。它只需在满是pick
命令的文件上运行设置为的任何命令。(如果这两个都未设置,Git将返回到通常的$Git_编辑器/core.EDITOR
/内置默认值,可能是-vim
编辑器。)
因此,您可以用您喜欢的任何语言编写自己的脚本,并将其放入GIT\u SEQUENCE\u编辑器
或SEQUENCE.EDITOR
:
#! /usr/bin/env python
"""
python script to automate replacing `pick <<hash>> AUTO_COMMIT`
with `fixup ...`
"""
现在,你必须编写你的程序来实现这一点。它只需打开名为程序参数的文件,然后将pick
替换为fixup
或squash
或您喜欢的任何内容(如果合适),然后将其写回文件并退出
然后,运行:
GIT_SEQUENCE_EDITOR=that_script git rebase -i ...
它不运行vim
或pick
命令上的任何编辑器,而是运行脚本,替换正确的脚本并关闭。如果您为任何替换选择了“挤压”或“编辑”,则这不是“序列编辑器”操作的一部分,因此它使用常规Git编辑器,并且仍然运行vim
或其他任何操作
为自己制作一个小别名或脚本,以这种方式运行rebase,您就一切就绪了。啊,太棒了!谢谢
#! /bin/sh
# shell script to automate replacing ...
GIT_SEQUENCE_EDITOR=that_script git rebase -i ...