Приходясь нелегко понимание выборки мерзавца

Я не заметил это ранее, когда я смотрел документация для календарного модуля , но метод, названный , monthrange предоставляет эту информацию:

monthrange (год, месяц)
        рабочий день Возвратов первого дня месяца и количества дней в месяце, в течение указанного года и месяца.

>>> import calendar
>>> calendar.monthrange(2002,1)
(1, 31)
>>> calendar.monthrange(2008,2)
(4, 29)
>>> calendar.monthrange(2100,2)
(0, 28)

так:

calendar.monthrange(year, month)[1]

походит на самый простой способ пойти.

Только, чтобы быть ясным, monthrange високосные годы поддержек также:

>>> from calendar import monthrange
>>> monthrange(2012, 2)
(2, 29)

Мой предыдущий ответ все еще работы, но является явно субоптимальным.

52
задан eldarerathis 12 June 2012 в 08:12
поделиться

2 ответа

Во-первых, нет такой концепции локального отслеживания ветвей, только удаленного отслеживания ветвей. Итак, origin / master - это ветвь удаленного отслеживания для master в репозитории origin .

Обычно вы выполняете git fetch $ remote который обновляет все ваши ветки удаленного отслеживания и при необходимости создает новые.

Однако вы также можете указать refspec, но он не коснется ваших ветвей удаленного отслеживания, вместо этого он получит указанную вами ветку и сохранит ее в FETCH_HEAD, если вы не укажете место назначения. В общем, вы не хотите связываться с этим.

Наконец,

fetch = +refs/heads/*:refs/remotes/origin/*

Это означает, что если вы сделаете

git fetch origin

Это действительно будет:

git fetch origin +refs/heads/*:refs/remotes/origin/*

Это означает, что удаленный Heads / foobar будет быть локальным remotes / origin / foobar ,

60
ответ дан 7 November 2019 в 09:24
поделиться

felipec ответил на большинство вопросов в своем ответе .

Несколько оставшихся (большинство из них взято из справочной страницы git fetch ; к сожалению, кое-где устарело):

  • Если ветка удаленного отслеживания (ветвь, которая отслеживает некоторая ветка в каком-то удаленном репозитории) не существует, она будет создана.

  • Ветвь, в которую вы загружаете ( в [+] : ) не обязательно размещаться в пространстве имен remotes / / . Например, для зеркального отображения репозиториев ( git clone --mirror ) refspec составляет от 1 до 1. Раньше, до разметки отдельных пультов (до remotes / / пространство имен для удаленного отслеживания ссылок) главная ветвь была выбрана в ветвь с именем origin . Даже текущие теги извлекаются непосредственно в пространство имен tags / зеркальным способом.

  • Если ветвь, в которую выполняется выборка (правая часть refspec : делает существует, Git проверит, приведет ли загрузка к быстрой перемотке вперед, т.е. если текущее состояние в является предком состояния в в данном удаленном репозитории. Если это не так 't, и вы не используете -f / - принудительно опцию для git-fetch или префикс refspec с' + '(используйте + : refspec) fetch откажется обновлять эту ветку.

  • Мастер происхождения git fetch эквивалентен мастеру источника fetch: , а не мастеру источника fetch: мастер ; он сохраняет извлеченное значение главной ветки (удаленного источника ) в FETCH_HEAD , а не в главной ветви или удаленном отслеживании ] remote / origin / master ветвь. За ним может следовать git merge FETCH_HEAD . Обычно не используется напрямую, но как часть одноразового извлечения без установки ветки удаленного отслеживания: git pull .

  • + refs / Heads / *: refs / remotes / origin / * как значение для remote.origin. Переменная конфигурации fetch означает, что каждая ветвь (ссылка в пространстве имен refs / Heads / ) в удаленном источнике выбирается в соответственно названную ветвь удаленного отслеживания в refs / remotes / origin / , например, ветвь master в origin (т.е. refs / Heads / master ref) будет извлечена в origin / master ветвь удаленного отслеживания (то есть refs / remotes / origin / master ref). Префикс «+» означает, что выборка будет успешной даже в случае отсутствия быстрой перемотки вперед, что означает, что ветвление на удаленном компьютере перебазировано или перемотано (сброшено в какое-то состояние в прошлом) или изменено иным образом.

Sidenote: You вероятно, захочет использовать команду git remote более высокого уровня для управления удаленными репозиториями и получения обновлений.

refs / Heads / master ref) будут извлечены в ветку удаленного отслеживания origin / master (то есть refs / remotes / origin / master ref). Префикс «+» означает, что выборка будет успешной даже в случае отсутствия быстрой перемотки вперед, что означает, что ветвление на удаленном компьютере перебазировано или перемотано (сброшено в какое-то состояние в прошлом) или изменено иным образом.

Sidenote: You вероятно, захочет использовать команду git remote более высокого уровня для управления удаленными репозиториями и получения обновлений.

refs / Heads / master ref) будут извлечены в ветку удаленного отслеживания origin / master (то есть refs / remotes / origin / master ref). Префикс «+» означает, что выборка будет успешной даже в случае отсутствия быстрой перемотки вперед, что означает, что ветвление на удаленном компьютере перебазировано или перемотано (сброшено в какое-то состояние в прошлом) или изменено иным образом.

Sidenote: You вероятно, захочет использовать команду git remote более высокого уровня для управления удаленными репозиториями и получения обновлений.

23
ответ дан 7 November 2019 в 09:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: