Git
Chapters ▾ 2nd Edition

A3.5 Appendix C: Команды Git - Совместная работа и обновление проектов

Совместная работа и обновление проектов

Не так уж много команд в Git требуют сетевого подключения для своей работы, практически все команды оперируют с локальной копией проекта. Когда вы готовы поделиться своими наработками, всего несколько команд помогут вам работать с удалёнными репозиториями.

git fetch

Команда git fetch связывается с удалённым репозиторием и забирает из него все изменения, которых у вас пока нет и сохраняет их локально.

Мы познакомились с ней в главе Получение изменений из удалённого репозитория - Fetch и Pull и продолжили знакомство в Удалённые ветки.

Мы использовали эту команду в нескольких примерах из главы Contributing to a Project.

Мы использовали её для скачивания запросов на слияние (pull request) из других репозиториев в главе Pull Request Refs, также мы рассмотрели использование git fetch для работы с упакованными репозиториями в главе Создание пакетов.

Мы рассмотрели тонкую настройку git fetch в главe и Спецификации ссылок.

git pull

Команда git pull работает как комбинация команд git fetch и git merge, т.е. Git вначале забирает изменения из указанного удалённого репозитория, а затем пытается слить их с текущей веткой.

Мы познакомились с ней в главе Получение изменений из удалённого репозитория - Fetch и Pull и показали как узнать, какие изменения будут приняты в случае применения в главе Просмотр удаленного репозитория.

Мы также увидели как она может оказаться полезной для разрешения сложностей при перемещении веток в главе Перебазируй, пока перебазируешь (за такие названия нужно расстреливать).

Мы показали как можно использовать только URL удалённого репозитория без сохранения его в списке удалённых репозиториев в главе Checking Out Remote Branches.

И наконец мы показали как проверять криптографические подписи полученных коммитов, используя опцию --verify-signatures в главе Подпись коммитов.

git push

Команда git push используется для установления связи с удалённым репозиторием, вычисления локальных изменений отсутствующих в нём, и собственно их передачи в вышеупомянутый репозиторий. Этой команде нужно право на запись в репозиторий, поэтому она использует аутентификацию.

Мы познакомились с этой командой в главе Отправка изменений в удаленный репозиторий (Push). Там мы рассмотрели основы обновления веток в удалённом репозитории. В главе Отправка изменений мы подробнее познакомились с этой командой, а в Отслеживание веток мы узнали как настроить отслеживание веток для автоматической передачи на удалённый репозиторий. В главе Удаление веток на удалённом сервере мы использовали флаг --delete для удаления веток на сервере, используя git push.

На протяжении главы Contributing to a Project мы показали несколько примеров использования git push для совместной работы в нескольких удалённых репозиториях одновременно.

В главе Публикация изменений в подмодуле мы использовали опцию --recurse-submodules чтобы удостовериться, что все субмодули будут опубликованы перед отправкой на проекта на сервер, что может быть реально полезным при работе с репозиториями, содержащими субмодули.

В главе Other Client Hooks мы поговорили о триггере pre-push, который может быть выполнен перед отправкой данных, чтобы проверить возможность этой отправки.

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

git remote

Команда git remote служит для управления списком удалённых репозиториев. Она позволяет сохранять длинные URL репозиториев в виде понятных коротких строк, например "origin", так что вам не придётся забивать голову всякой ерундой и набирать её каждый раз для связи с сервером. Вы можете использовать несколько удалённых репозиториев для работы и git remote поможет добавлять, изменять и удалять их.

Эта команда детально рассмотрена в главе Работа с удалёнными репозиториями, включая вывод списка удалённых репозиториев, добавление новых, удаление или переименование существующих.

Она используется практически в каждой главе, но всегда в одном и том же виде: git remote add <имя> <URL>.

git archive

Команда git archive используется для упаковки в архив указанных коммитов или всего репозитория.

Мы использовали git archive для для создания тарбола (tar.gz файла) всего проекта для передачи по сети в главе Preparing a Release.

git submodule

Команда git submodule используется для управления вложенными репозиториями. Например, это могут быть библиотеки или другие, используемые не только в этом проекте ресурсы. У команды submodule есть несколько под-команд — add, update, sync и др. — для управления такими репозиториями.

Эта команда упомянута и полностью раскрыта в главе Подмодули.