Как получить количество неопубликованных коммитов с помощью GitPython?

С помощью git status я могу получить информацию о количестве неопубликованных коммитов:

» git status             
# On branch master
# Your branch is ahead of 'origin/master' by 2 commits.
#   (use "git push" to publish your local commits)
#
nothing to commit, working directory clean

Я хочу получить неопубликованные коммиты (или подсчитать) с помощью GitPython. Я нашел repo.git.status(), но это не то, что мне нужно.


person Gr1N    schedule 06.04.2013    source источник


Ответы (2)


Команда, которую вы ищете, это:

repo.iter_commits('BRANCH..BRANCH@{u}')

или если вы хотите это как список:

list(repo.iter_commits('BRANCH..BRANCH@{u}'))

Синтаксис BRANCH@{u} относится к восходящей ветви BRANCH.

person Chronial    schedule 07.04.2013
comment
Это дало мне пустой список, когда я знал, что у меня есть неотправленные изменения. Я обнаружил, что мне пришлось изменить порядок аргументов, чтобы найти коммиты, которые я сделал локально, но еще не отправил, например, это сработало: list(repo.iter_commits('master@{u}..master')) - person Clare Macrae; 10.02.2020

Спасибо @Chronial и @Clare-Macrae за ваши отзывы. Используя gitPython ==3.1.11, я сделал это следующим образом:

branch = self.repo.active_branch
unpushed_symbol = '⇡' if list(self.repo.iter_commits(f'{branch}@{{u}}..{branch}')) else constants.NOTHING
unpulled_symbol = '⇣' if list(self.repo.iter_commits(f'{branch}..{branch}@{{u}}')) else constants.NOTHING
person Édouard Lopez    schedule 02.01.2021