按文件名将单个提交拆分为多个提交,而无需手动遍历所有文件
Split a single commit to multiple commits by filename without manually going through all files
我有一个更改了 100 个文件的提交。我想将该提交拆分为 100 个提交,其中一个提交按文件名提交。
目前我做 git rebase -i <startpoint>
然后用 e
和 reset HEAD^1
标记我想编辑的提交,然后是 git add && git commit -m <filename>
系列。这对于多个文件变得乏味。
最好是一行 bash 没有脚本。此外,它应该具有足够的可读性以便于记忆。
更新: 最终使用 ElpieKay 的解决方案
git reset HEAD^ --soft
git diff --cached --name-only --relative | while read f; do git commit -m "$f" -- "$f"; done
假设这是最后一次提交并且提交id是abc123
.
尝试
git reset abc123 --hard
git reset abc123^ --soft
git diff --cached --name-only | while read f;do git commit -m "$f" -- "$f";done
如果出现问题,运行git reset abc123 --hard
恢复
我有一个更改了 100 个文件的提交。我想将该提交拆分为 100 个提交,其中一个提交按文件名提交。
目前我做 git rebase -i <startpoint>
然后用 e
和 reset HEAD^1
标记我想编辑的提交,然后是 git add && git commit -m <filename>
系列。这对于多个文件变得乏味。
最好是一行 bash 没有脚本。此外,它应该具有足够的可读性以便于记忆。
更新: 最终使用 ElpieKay 的解决方案
git reset HEAD^ --soft
git diff --cached --name-only --relative | while read f; do git commit -m "$f" -- "$f"; done
假设这是最后一次提交并且提交id是abc123
.
尝试
git reset abc123 --hard
git reset abc123^ --soft
git diff --cached --name-only | while read f;do git commit -m "$f" -- "$f";done
如果出现问题,运行git reset abc123 --hard
恢复