Вы можете использовать для этого чистый gitpython.
Если вы хотите пройти через определенный коммит (предполагая, что первый
commit is HEAD), просто используйте max_count
. См. Объект Commit
.
two_commits = list(repo.iter_commits('master', max_count=2))
assert len(two_commits) == 2
, если вы хотите подобную способность к git log commit1...commit2
, как вы упомянули:
logs = repo.git.log("--oneline", "f5035ce..f63d26b")
даст вам:
>>> logs
'f63d26b Fix urxvt name to match debian repo\n571f449 Add more key for helm-org-rifle\nbea2697 Drop bm package'
Вы также можете использовать logs = repo.git.log("f5035ce..f63d26b")
, но он даст вам всю информацию (так же, как вы используете git log
без --oneline
)
, если вы хотите хороший вывод, используйте красивую печать:
from pprint import pprint as pp
>>> pp(logs)
('f63d26b Fix urxvt name to match debian repo\n'
'571f449 Add more key for helm-org-rifle\n'
'bea2697 Drop bm package')
Подробнее о repo.git.log
см. https://stackoverflow.com/a/55545500/6000005