Ste*_*lay 39 git diff patch commit
有人拿了Moodle的一个版本(我不知道),在一个目录中应用了很多变化,然后发布它(树在这里).
如何确定最有可能编辑原始项目的哪个提交以形成此树?
这将允许我使用此补丁在适当的提交中形成分支.当然,它来自1.8或1.9分支,可能来自发布标记,但特定提交之间的差异对我没有多大帮助.
事后更新:knittl的回答让我尽可能接近.我首先添加了我的补丁仓库作为远程"外来"(没有共同提交,没关系),然后在带有几个格式选项的循环中做差异.第一个使用--shortstat格式:
for REV in $(git rev-list v1.9.0^..v1.9.5); do
git diff --shortstat "$REV" f7f7ad53c8839b8ea4e7 -- mod/assignment >> ~/rdiffs.txt;
echo "$REV" >> ~/rdiffs.txt;
done;
Run Code Online (Sandbox Code Playgroud)
第二个只计算了没有上下文的统一差异中的行变化:
for REV in $(git rev-list v1.9.0^..v1.9.5); do
git diff -U0 "$REV" f7f7ad53c8839b8ea4e7 -- mod/assignment | wc -l >> ~/rdiffs2.txt;
echo "$REV" >> ~/rdiffs2.txt;
done;
Run Code Online (Sandbox Code Playgroud)
有成千上万的提交要挖掘,但这个似乎是最接近的匹配.
kni*_*ttl 12
您可以编写一个脚本,该脚本将给定树与存储库中的修订范围区分开来.
假设我们首先将更改的树(没有历史记录)提取到我们自己的存储库中:
git remote add foreign git://…
git fetch foreign
Run Code Online (Sandbox Code Playgroud)
然后,我们为要匹配的每个修订输出diffstat(简短形式):
for REV in $(git rev-list 1.8^..1.9); do
git diff --shortstat foreign/master $REV;
done
Run Code Online (Sandbox Code Playgroud)
寻找具有最小更改量的提交(或使用一些排序机制)
| 归档时间: |
|
| 查看次数: |
2474 次 |
| 最近记录: |