Git "Получить URL" и "Push URL", в чем разница?

Когда URL-адрес Fetch и URL-адрес Push не будут одинаковыми для определенного пульта?

Например, когда я запускаю git remote show central для удаленного централизованного управления, вывод выглядит следующим образом:

* remote central
  Fetch URL: [email protected]:/home/aoberoi/Repositories/example.git
  Push  URL: [email protected]:/home/aoberoi/Repositories/example.git
  HEAD branch: master
  Remote branch:
    master tracked

Я просто не понимаю, почему я буду получать и переходить на два разных URL-адреса, для чего предназначен рабочий процесс?

Ответ 1

Я не уверен, что вы имеете в виду, так как ваш пример включает в себя 2 одинаковых URL, но URL-адреса для push и pull могут отличаться из-за:

  • проблема протокола: см. Git протоколы: URL будет немного отличаться, потому что не каждый протокол поддерживает push (например, http, за исключением smart http)
  • промежуточные репозитории: вы можете нажать на другой репозиторий, который будет "средним человеком" между истинным "центральным" репо и вашим. Затем могут выполняться операции с сертификатами (например, через крюк после приема), и фиксация будет затем перенесена на "фактический" удаленный оттуда, если эти операции (например, "модульное тестирование", "статический анализ кода"... ) успешно проходят.
    Например, такое использование см. В следующих разделах: " Какое самое умное использование исходного репозитория, который вы когда-либо видели?.

Как говорится, зафиксировать 697f652 (Git 2.3.1+, Q1/Q2 2015) Git сопровождающий Junio ​​C Hamano (gitster) упоминают:

Кажется, распространенной ошибкой является попытка использовать один удаленный (например, "источник" ) для извлечения из одного места (т.е. upstream) при нажатии на другой (т.е. точка публикации).

Это никогда не будет удовлетворительно работать, и легко понять, почему, если вы думаете о том, что refs/remotes/origin/* будет означать в таком мире. Это принципиально не может отражать реальность.
Если он соответствует состоянию вашего восходящего потока, он не может соответствовать тому, что у вас есть опубликовано и наоборот.

В документации не было ясно, что "remote.<nick>.pushURL" и "remote.<nick>.URL" там, чтобы назвать тот же репозиторий, доступ к которому осуществляется через разные транспорты, не два отдельных репозитория.

Ответ 2

Я думаю, вы могли бы использовать его, если бы хотели, чтобы вкладчики-репозитории "промежуточного" были подталкивать, а затем другие будут подталкивать изменения оттуда к основному репо после рассмотрения и утверждения. Таким образом, вы получите от основного репо и нажмите на промежуточное репо.