基于合并日期的 Git 存档

Posted

技术标签:

【中文标题】基于合并日期的 Git 存档【英文标题】:Git Archive Based on Merged Date 【发布时间】:2015-06-26 07:31:59 【问题描述】:

我可以通过这个命令知道git签入的合并日期:

git log --after='2015-05-12' --merges

它将显示 2015 年 5 月 12 日之后的修订历史记录。

有什么方法可以将它与 git archive 结合起来吗?

目标是:

将 2015 年 5 月 12 日之后合并的所有修改文件导出为一个 文件夹位置。

提前谢谢你!

【问题讨论】:

【参考方案1】:

嗯,我认为您的目标可以通过以下步骤实现:

    获取最后一次合并提交的 sha1:git log --after='2015-05-12' --merges --pretty=format:%H(有更简单的方法可以做到这一点,但没关系) 获取 HEAD 中被更改的文件列表,因为:git diff <sha1>..HEAD --name-onlyHEAD 放入存档中,根据上一步收到的列表限制文件

如果文件数量足够小(即不超过命令行参数的限制),命令如下所示:

git diff --name-only $(git log --after='2015-05-12' --merges -n 1 --pretty=format:%H)..HEAD | \
    xargs git archive --prefix changed/ -o some.tar HEAD

【讨论】:

感谢您的回复!是否有可能实现自动化?

以上是关于基于合并日期的 Git 存档的主要内容,如果未能解决你的问题,请参考以下文章

如果基于开始日期的行之间没有更改,则合并员工历史记录

将文件添加到存档时不要修改文件的编辑日期

如何使用存档文件名中存档文件夹的日期创建 RAR 存档?

更改 git 标签的日期(或基于它的 GitHub Release)

如何基于R中的2个日期时间变量合并行

SQL Server 2019 - 每天存档远程数据库,每个表中都有存档日期