我有一个稍微过时的实验分支,由于时间限制而被搁置。我需要将其拾取并将其移动到项目的 HEAD 中。
现在的问题是,分支中的补丁实际上有点大,存在大量冲突,所以我想将分支中的提交分解为单个文件提交,这样我可以更轻松地一一应用它们.
是否有一些自动命令可以为我执行此操作,或者我需要手动执行此操作?
最佳答案
你可以这样做:
git checkout -b experiment master^^^^
git rev-list master^^^..master |
while read rev;
do
git diff --name-only $rev^..$rev |
while read file;
do
git checkout $rev -- $file;
git add $file;
git commit -C $rev;
done;
done
请注意每条语句中^的数量
这假设您想要扩展范围master^^^^..master
并且它是线性历史或者您不介意丢失 merge 。它还假设您希望为每次受影响的文件保留相同的提交消息。
关于git - 将分支分解为单个文件提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11502064/