python - GitPython中当前日期和前一段时间之间的git diff

原文 标签 python git git-diff gitpython

我正在使用GitPython在一段时间内(例如现在和1周前)查找更改的文件:

 repo = Repo(self.repo_directory)
 for item in repo.head.commit.diff('develop@{1 weeks ago}'):
     print ("smth") 


但即使将周数更改为其他数字也没有任何反应,这意味着在该时间段内未检测到差异。如果我将'develop@{1 weeks ago}'更改为'HEAD@{1 weeks ago}',则更改的数量巨大,一周之内不正确。任何帮助表示赞赏。

最佳答案

develop@{1 weeks ago}将使用reflog


参考日志或“ reflogs”记录本地存储库中分支和其他参考提示的更新时间。


这意味着一周前本地Git存储库可能未在develop上记录任何本地操作,而它已记录了“ HEAD”发生的任何事情。

如果对开发进行了远程更改,然后将其历史记录本地导入,则develop@{1 weeks ago}可能不会产生任何结果(因为本地reflog不会引用它)。

只有git log --since/--until可以在任何日期运行(不仅限于reflog中记录的日期,后者仅限于本地运行,并且默认为90天)

但是我不知道GitPython是否实现了这一点。
它的git.refs.log模块更多地基于reflogs条目,这对您的情况没有帮助。

相关文章:

git - Git diff:是否可以显示仅更改的行

python - 如何根据特定的列值从总值中创建新的数据框?

python - 在Seaborn中绘制回归时如何获得数值拟合结果?

python - 执行另一个python脚本,然后关闭当前脚本

git - 结合git log --stat和--name-status吗?

git - 如何设置TFS 2013构建定义以从Git标签构建?

git - 为什么Git创建一个没有文件更改的合并提交?

git - git:为什么git diff没有显示任何差异?

python - 无法将sendgrid导入GAE应用程序

java - Git diff参数可以改善源代码更改对齐方式吗?