gpt4 book ai didi

git - 如何按文件拆分每个提交?

转载 作者:太空狗 更新时间:2023-10-29 13:18:30 24 4
gpt4 key购买 nike

我知道如何使用 git rebase -i 手动拆分提交,但如何按文件自动拆分分支中的每个提交?

例如,提交 A 修改了 3 个文件,f1、f2 和 f3。拆分后,有 3 个提交 A-f1、A-f2 和 A-f3。

我想这样做是为了让主要的重写变得更容易,因为我只需要压缩一些小的提交。

最佳答案

脚本

以下脚本按文件拆分 HEAD:

#!/usr/bin/env bash
set -e

SHA=$(git rev-parse --short HEAD)

# Change to repo root directory
cd $(git rev-parse --show-toplevel)

git reset HEAD^

git diff-tree --no-commit-id --name-only -r $SHA | while read -r f; do
git add "$f"
GIT_EDITOR="echo '0a\n$SHA $f\n\n.\nw' | ed -s" git commit -c $SHA
done

生成的提交消息的形式是:

<original SHA> <file name>

<original commit message>

用法

以下假设您可以将上述脚本作为 git-split 运行。

如果你想按文件分割一个范围内的所有提交,像这样使用它:

git rebase --interactive --exec git-split <branch>

如果你想在交互式 rebase 期间拆分单个提交,请像这样使用它:

p Commit to split
x git-split

欢迎对脚本进行任何改进。

关于git - 如何按文件拆分每个提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40698651/

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