获取差异的集合

时间:2010-08-31 04:29:15

标签: git logging github

我在github.com上有项目。整个夏天我都做了提交。现在我需要得到所有的补丁。

我知道我可以:

git log -p > project.path

但是这个变体在一个文件中写下所有的pathes。我该怎么做:

我在github存储库中有3个文件:

  • test.c的

  • test1.c

  • test2.c中

如何获得包含所有广告的3个文件?

  • 文件test.diff

  • test1.diff

  • test2.diff

谢谢

2 个答案:

答案 0 :(得分:1)

您可以使用git format-patch从提交中创建一系列补丁(每次提交一个补丁)。

答案 1 :(得分:1)

我无法想到任何真正的自动化方式,但这对我在unix系统上起作用。

首先,您需要拥有项目中第一个提交的ID,然后假装它是123abcd(有没有人知道自动获取此方法的方法?)。

一旦你拥有了第一次提交的id,你就可以遍历自第一次提交以来已经改变的文件并在每个提交上运行diff:

for file in `git diff --name-only 123abcd`; do 
    git diff 123abcd ${file} > `basename ${file}.patch`
done

这一切意味着什么:

git diff --name-only 123abcd

将为您提供自修订版123abcd

以来已更改的所有文件的列表
git diff 123abcd ${file} > `basename ${file}.patch`

生成实际差异并将其保存到文件名中,而不指定路径。

当您完成当前工作目录时,应保留所有.patch文件。