[英]git format-patch for all the commits to a file
我想为对文件/文件夹所做的所有提交获取补丁。
我可以通过git log --format="%H"-- path/to/folder
获取 commit-id 的列表
有没有办法从这个列表中生成补丁。
[编辑]:
下面的代码部分解决了我的问题
for c in `git log --format="%H" -- path/to/file`;do git format-patch "$c^1".."$c" -o patches ; done
因为 format-patch 是单独调用的,所以我会得到所有编号为 0001-commit-text.patch 的补丁,我将失去补丁的顺序。 有没有更好的解决办法
你可以试试 git diff initial_commit_id..latest_commit_id > changes.patch
这是基于这篇文章: https : //www.lullabot.com/articles/git-best-practices-upgrading-the-patch-process
例如:
git diff ab0b3a55de5..6f5dbbc4187b97
更新:如果您提供特定文件的路径作为 format-patch 的参数,它只会为更改该文件的提交创建补丁。 所以不需要循环和格式补丁的一一调用。 请参阅格式补丁中的单个文件示例
所以试试这个:
get format-patch from..to -o patches /path/to/file
想出下面的shell脚本来实现这一点。 欢迎任何其他答案。
#!/bin/bash
COUNTER=1;
for c in `git log --format="%H" --reverse -- path/to/file`;do
git format-patch --start-number=$COUNTER "$c^1".."$c" -o patches
let COUNTER=COUNTER+1
done
我仅使用git
轻微的即兴创作(只是组成):
git format-patch $(git rev-list --max-parents=0 HEAD)..HEAD -- path/to/file
如果rev-list --max-parents
返回多个提交,则可能不起作用。 使用该帖子中的想法:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.