Установите специальный git commit с pip


172

Я разрабатываю приложение django и использую pip для управления своими требованиями. Как я могу сделать, чтобы установить конкретный коммит git?

В моем случае мне нужно установить этот коммит: https://github.com/aladagemre/django-notification/commit/2927346f4c513a217ac8ad076e494dd1adbf70e1

Ответы:


281

Вы можете указать хеш коммита, имя ветки, тег.

Для имени ветви и тега вы также можете установить сжатый дистрибутив. Это быстрее и эффективнее, так как не требует клонирования всего хранилища. GitHub создает эти пакеты автоматически.

хэш:

$ pip install git+git://github.com/aladagemre/django-notification.git@2927346f4c513a217ac8ad076e494dd1adbf70e1

филиал имя

С мерзавцем

$ pip install git+git://github.com/aladagemre/django-notification.git@cool-feature-branch

или из исходного пакета

$ pip install https://github.com/aladagemre/django-notification/archive/cool-feature-branch.tar.gz

тег

с мерзавцем

$ pip install git+git://github.com/aladagemre/django-notification.git@v2.1.0

или из исходного пакета

$ pip install https://github.com/aladagemre/django-notification/archive/v2.1.0.tar.gz

Это плохо документированная функция, но вы можете найти больше информации на https://pip.pypa.io/en/latest/reference/pip_install.html#git


24
Это добавит это забавное сообщение:Could not find a tag or branch '2927346f4c513a217ac8ad076e494dd1adbf70e1', assuming commit.
vlad-ardelean

10
@ vlad-ardelean есть идеи о том, как сказать, что ПИП ЭТО - коммит? Это ставится на мой сценарий развертывания, и я не хочу подавлять все stderr.
Леонардо Арройо

Если вы ничего не указали, каково поведение?
Скотт Стаффорд

@ScottStafford У вас не должно быть ветки / тега, который вызывается как сообщение фиксации. Это было бы ... странно.
Мартин Тома

Кроме того , я хотел бы упомянуть версию HTTPS из git+команды: pip install git+https://github.com/gpoore/codebraid@011464539bfb09b8611c8aef0d543532cea958bf. Это может быть важно для людей, работающих за корпоративными http прокси.
grwlf

19

Дополнительный комментарий к ответу @ hugo-tavares:

Если это частный репозиторий GitHub, вам нужно использовать:

pip install git+ssh://git@github.com/....

В твоем случае:

pip install git+ssh://git@github.com/aladagemre/django-notification.git@2927346f4c513a217ac8ad076e494dd1adbf70e1

12

Можно автоматически установить пакет python с помощью файла needs.txt в вашем проекте, просто добавив следующую строку:

-e git+https://github.com/owner/repository.git@branch_or_commit

и запустите командную строку:

$ pip install -r requirements.txt


15
Для меня (пункт 9.0.1 в python3.5 virtualenv) это не сработало: pip install -r requirements.txtподнял 'Не удалось определить имя требования, укажите его с # egg ='. Но он работал с форматом '-e git + github.com/owner/repository.git#egg=branch_or_commit '
Эдуард Берт

Вам нужно использовать этот формат внутри файла needs.txt. Ты сделал это?
Маныш

Я получил это работает, но это неясно. Нужно иметь "package_name -e ...", а не просто "-e ..." в начале строки.
Уди

1

Если вы хотите создать пакет egg, вы все равно можете использовать тот же придаток @branch_or_commit: pip install git+ssh://git@github.com/myrepo.git@mybranch#egg=myeggscript

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.