Как через гит отправить в удаленный репозиторий файл

Обновлено: 07.07.2024

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

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

Чтобы иметь возможность перейти в удаленный репозиторий, вы должны убедиться, что все ваши изменения в локальном репозитории зафиксированы.

Рассмотрим git push как часть процесса синхронизации в Git. Синхронизация происходит между локальным и удаленным хранилищем, где источник и приемник могут отличаться. Есть много других частей для синхронизации, и git push-это одна из частей, потому что она загружает изменения, сделанные в локальном репозитории, чтобы поддерживать удаленный репозиторий в актуальном состоянии. В этом нет ничего сложного, и концепция проста, как и ее синтаксис.

Приведенного выше изображения достаточно для понимания концепции в двух словах.

Git Push

Пользователь клонирует репозиторий в качестве первого шага, чтобы внести некоторые изменения в репозиторий.

После этого он приступает к внесению изменений в локальную систему и добавляет эти изменения в промежуточную область.

После завершения всех изменений пользователь затем фиксирует все изменения в локальном репозитории.

А затем передает эти изменения на удаленный сервер. Наконец, он синхронизирует локальный и удаленный репозитории.

Синтаксис команды git Push в Git

Выполнение команды git push происходит путем ввода следующей команды:

git push <remote_repo> <branch_name>

remote_repo: это имя (или псевдоним) удаленного репозитория, в который мы переносим изменения.

branch_name: это ветвь, которую пользователь толкает в удаленный репозиторий.

Представьте себе, что ветвь (branch) в Git подобна ветвям в дереве. Каждая ветвь представляет собой новую функцию или модификацию, находящуюся в стадии разработки. Кроме того, основная ветвь — это стабильный код, подобный стволу дерева, также называемый master branch (главной ветвью). Что, в свою очередь, помогает нестабильному коду ветвей держаться подальше от стабильного основного кода.

Как перенести изменения из локального репозитория в удаленный репозиторий в Git

Чтобы протолкнуть некоторые изменения в удаленный репозиторий, этот репозиторий должен, прежде всего, содержать некоторые коммиты в локальной системе. Поэтому в этом разделе мы сначала создадим некоторые изменения в репозитории. Во-вторых, мы зафиксируем эти изменения и, наконец, отразим их в удаленном репозитории.

Перед созданием изменений в репозитории убедитесь, что вы выполнили следующие операции:

  • У вас раздвоенный репозитория на GitHub.
  • Вы клонировали один и тот же репозиторий на локальную машину.

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

В качестве хорошей практики сначала проверьте, что у вас есть чистый репозиторий с помощью команды git status (никаких ожидающих изменений для фиксации).

Git Push

После выполнения команды git status появятся следующие строки:

On branch master: означает, что в данный момент мы находимся в главной ветви. Поскольку других ветвей пока нет, мы по умолчанию находимся в главной ветви.

Your branch is up to date with origin/master: Origin — это имя удаленного репозитория, которое мы дали при подключении локального репозитория к удаленному репозиторию.

Последовательность действий

  1. Перечислите все файлы с командой ls в репозитории.

Git Push

Так как существует только один файл (README.md это всего лишь инструкция), давайте внесем некоторые изменения в его содержание.

  1. Откройте файл с помощью вашего любимого редактора и внесите в него любые изменения.
  2. Мы изменили файл на следующий код.

changed_web_page_html

  1. Добавьте внесенные изменения в промежуточную область и зафиксируйте их.

committing_clone

  1. Введите следующую команду, чтобы перенести эти изменения в репозиторий GitHub, и нажмите клавишу enter.

git push origin master

git_push

  1. Пользователь получает приглашение предоставить учетные данные с помощью GitHub в качестве части безопасности. Введите свои учетные данные и нажмите на кнопку входа в систему.

github

git_push_command

Примечание: последние две строки выглядят следующим образом:

1в4522а..285f559: показывает хэш-значение обеих ветвей. Таким образом, хэш-значение конечного коммита, отраженного на GitHub, равно 285f559.

Строка Writing Objects: 100% имеет важное значение. В Git можно сказать, была ли команда push выполнена успешно или нет, только взглянув на эту строку. Если она показывает 100%, то все изменения успешно перенесены в облако.

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

Варианты Git Push

В git push command доступно множество опций, которые помогают нам достичь определенных конкретных задач всего за одно выполнение. В этом разделе мы рассмотрим основные и наиболее часто используемые параметры команды git push.

Prune Option

Использование: git push –prune remote XYZ

Dry Run Option

Эта опция будет выполнять и показывать выполнение команды git push, но не будет отправлять никаких обновлений в удаленный репозиторий.

Использование: git push –dry-run <remote> <local_branch>

Atomic Option

Эта опция в git Push обеспечивает атомарную операцию на удаленном репозитории, т. е. либо каждую ссылку обновляет, либо вообще ничего.

git push –atomic <remote_repo> <working_branch>

All Option

Все опции будут выталкивать все ветви и их зафиксированные изменения в удаленный репозиторий.

Использование: git push-all <remote>

В последнем уроке мы познакомились с командой Git fetch и Read more

В одной из последних статей мы узнали о команде Git Read more

Мы уже знаем, как вносить изменения в локальное хранилище и Read more

"Клонирование" означает создание идентичных особей естественным или искусственным путем. Клонирование Read more

Сегодня мы узнаем, как скопировать чужой репозиторий в наш аккаунт Read more

Все данные, доступные в локальном репозитории, могут быть загружены в Read more


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

Три файла и два коммита

Прежде чем следовать этому учебнику по git remote add origin, настройте локальную установку Git, локально инициализированный репозиторий по крайней мере с одним коммитом Git и учетную запись в GitHub или GitLab.

Для этого урока мы будем использовать GitHub, но процесс с GitLab практически идентичен.

Начните с локального репозитория, хранящегося в папке с именем my-local-repo, в которой находятся три файлов:

Сам репозиторий имеет только две коммита, которые вы можете увидеть, выполнив команду git reflog, как показано на рисунке ниже.


Создайте удаленный репозиторий на GitHub


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

Создать удаленный репозиторий легко.

Войдите в GitHub и воспользуйтесь мастером «Create a new repository».

В этом примере я назвал репозиторий GitHub my-github-repo, чтобы четко отличить его от репозитория Git, который хранится локально в папке с именем my-local-repo.


Поскольку вы будете передавать информацию в репозиторий GitHub, не инициализируйте ее с помощью README, настройте файл gitignore или добавьте лицензию. Все эти вещи будут существовать в локальном репозитории и будут впоследствии перенесены в удаленный GitHub. Если эти ресурсы существуют в обоих репозиториях до запуска команды git remote add origin, это создаст дополнительные шаги слияния и разрешения конфликтов, которых легко избежать.

Скопируйте и измените URL удаленного добавления GitHub

При условии, что URL-адрес уникально идентифицирует созданный мной репозиторий GitHub:

Скопируйте и вставьте этот URL-адрес в текстовый редактор, а затем добавьте свое имя пользователя и пароль в начало URL-адреса: Эта настройка URL позволяет аутентифицировать файл без использования диспетчера учетных данных или другого инструмента управления паролями.

Запустите команду git remote add origin

С URL-адресом GitHub, сохраненным в буфере обмена в папке, содержащей локальный репозиторий Git, откройте окно терминала и выполните следующую команду git remote add origin:

Эта команда будет выполнена, но система не предоставит никакой обратной связи в окне терминала. Чтобы убедиться, что удаленное хранилище было добавлено в вашу конфигурацию, используйте команду git remote –v. Эта команда покажет, что GitHub является целью выборки и отправки локального репозитория.

Выполните git push

Наконец, с настроенной службой GitHub отправьте все свои локальные изменения кода, историю изменений на удаленный сервер с помощью команды git push.

Также включите название ветки, которую нужно нажать, которая в этом случае является master.

По завершении этого действия в окне терминала отображается количество объектов, отправленных на сервер, и указывается, что ваш локальный репозиторий настроен на отслеживание ветки с именем master на сервере GitHub.

Убедитесь, что прошел git push на GitHub

После завершения команд git remote add и push вернитесь к экземпляру GitHub и посмотрите на содержимое недавно созданного репозитория.

Результат локальной команды git remote add и push отражается в удаленном репозитории GitHub.

Удаленный репозиторий GitHub должен содержать все файлы, которые составляют ваш локальный репозиторий, и в то же время хранить копию вашей истории коммитов.

Если вы посмотрите на мой репозиторий GitHub, вы увидите файлы HelloWorld.java, index.html и style.css, а также указание на то, что репозиторий содержит две фиксации.

Эти файлы и коммиты соответствуют выводу команды git reflog с самого начала этого урока.

В системе SVN используется единый централизованный репозиторий, служащий центром связи для разработчиков. Совместная работа ведется путем передачи наборов изменений между рабочими копиями разработчиков и центральным репозиторием. Однако модель распределенной совместной работы в Git предполагает, что каждый разработчик использует собственную копию репозитория со своей локальной историей и структурой веток. Обычно пользователи делятся не отдельными наборами изменений, а сериями коммитов. Вместо того чтобы выполнять коммит одного набора изменений из рабочей копии в центральный репозиторий, Git позволяет передавать между репозиториями целые ветки.

git remote

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

Например, на следующем рисунке изображены два удаленных подключения из вашего репозитория к центральному репозиторию и репозиторию другого разработчика. Вместо того, чтобы ссылаться на них по их полным URL-адресам, вы можете передавать командам Git только ярлыки origin и john.

Обзор использования git remote

По сути, команда git remote — это интерфейс для управления списком записей об удаленных подключениях, которые хранятся в файле /.git/config репозитория. Для просмотра текущего состояния списка удаленных подключений используются следующие команды.

Просмотр конфигураций удаленных репозиториев Git

Список ваших удаленных подключений к другим репозиториям.

Аналогично команде выше, но включает URL-адрес каждого подключения.

Создание и изменение конфигураций удаленных репозиториев Git

Команда git remote также предоставляет удобный способ изменения файла /.git/config репозитория. Перечисленные ниже команды позволяют управлять подключениями к другим репозиториям и изменять файл /.git/config репозитория. Такого же результата можно достичь, напрямую отредактировав файл /.git/config с помощью текстового редактора.

Создание нового подключения к удаленному репозиторию. После добавления удаленного репозитория имя <name> можно использовать в качестве удобного ярлыка для адреса <url> в других командах Git.

Удаление подключения к удаленному репозиторию с именем <name> .

Переименование удаленного подключения с имени <old-name> на <new-name> .

Git предоставляет каждому разработчику полностью изолированную среду разработки. Информация не передается между репозиториями автоматически. Вместо этого разработчикам нужно вручную загружать вышестоящие коммиты в локальный репозиторий или вручную отправлять локальные коммиты обратно в центральный репозиторий. Команда git remote представляет собой простой способ передачи URL-адресов в эти команды обмена.

Удаленное подключение к origin

В процессе клонирования с помощью команды git clone автоматически создается удаленное подключение к исходному репозиторию (такое соединение называется origin). Это позволяет разработчикам, создающим локальную копию центрального репозитория, легко загружать вышестоящие изменения или публиковать локальные коммиты. Именно поэтому большинство проектов на основе Git называют свой центральный репозиторий origin.

URL-адреса репозиториев

Команды git remote

Команда git remote — одна из многих команд Git, которые принимают дополнительные «подкоманды». Ниже рассмотрены наиболее часто используемые подкоманды git remote .

Добавляет запись к ./.git/config для удаленного репозитория с именем <name> по URL-адресу <url> .

Принимает параметр -f , который запустит команду git fetch сразу после создания записи об удаленном репозитории.

Принимает параметр --tags , который немедленно запустит команду git fetch и импортирует все теги из удаленного репозитория.

Обновляет ./.git/config для переименования записи с <OLD> на <NEW> . При этом обновляются все удаленно отслеживаемые ветки и настройки конфигурации удаленного репозитория.

Изменяет ./.git/config и удаляет удаленный репозиторий с именем <NAME> . При этом удаляются все удаленно отслеживаемые ветки и настройки конфигурации удаленного репозитория.

Вывод URL-адресов для записи об удаленном репозитории.

Принимает параметр --push , поскольку URL-адреса чаще отправляют с помощью команды push, а не извлекают с помощью fetch.

При указании параметра --all будут перечислены все URL-адреса для данного удаленного репозитория.

Выводит общую информацию об удаленном репозитории с именем <NAME> .

Удаляет из репозитория <NAME> все локальные ветки, которые отсутствуют в удаленном репозитории.

Принимает параметр --dry-run , который выводит список удаляемых веток, но на самом деле не удаляет их.

Примеры git remote

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

Просмотр удаленных репозиториев

По умолчанию команда git remote отображает ранее сохраненные удаленные подключения к другим репозиториям. Создается однострочный список закладок с именами удаленных репозиториев.

При вызове git remote с параметром -v будет выведен список закладок с именами и соответствующими URL-адресами репозиториев. Параметр -v расшифровывается как «verbose» — подробный. Ниже приведен пример подробного вывода команды git remote .

Добавление удаленных репозиториев

Команда git remote add используется для создания записи о новом подключении к удаленному репозиторию. После добавления удаленного репозитория имя можно использовать в качестве удобного ярлыка для адреса в других командах Git. Дополнительные сведения о принятом синтаксисе URL-адресов см. в разделе «URL-адреса репозиториев» ниже. Эта команда создаст новую запись в файле ./.git/config репозитория. Ниже приведен пример обновления этого файла конфигурации.

Проверка удаленного репозитория

Для получения подробного вывода о конфигурации удаленного репозитория к команде git remote можно добавить подкоманду show. Вывод будет содержать список веток, связанных с удаленным репозиторием, а также конечных точек, подключенных для извлечения (fetch) и отправки (push).

Получение и извлечение данных из удаленных репозиториев Git

Отправка данных в удаленные репозитории Git

Для записи данных в удаленный репозиторий используется команда git push .

В этом примере состояние локальной ветки <branch-name> передается в удаленный репозиторий, обозначенный как <remote-name> .

Переименование и удаление удаленных репозиториев

Принцип работы команды git remote rename очевиден из названия. В результате ее выполнения происходит переименование удаленного подключения с имени <old-name> на <new-name> . Кроме того, изменяется контент ./.git/config для переименования записи для удаленного репозитория.

Команда git remote rm удаляет подключение к удаленному репозиторию, обозначенному с помощью параметра <name> . Чтобы показать работу команды, «отменим» добавление из последнего примера. После выполнения команды git remote rm remote_test мы увидим, что запись [remote "remote_test"] удалена из контента ./.git/config .

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

Система Git появилась, как средство управления исходными текстами в операционной системе Linux и завоевала множество поклонников в среде Open Source.

Сервис Github предоставляет хостинг (хранение) исходных текстов как на платной, так и на бесплатной основе. Это одна из крупнейших систем, которую любят Open Source пользователи. Основное отличие платной версии — это возможность создания частных репозиториев (хранилищ) исходных текстов и если вам скрывать нечего, то можете спокойно пользоваться бесплатной версией.

После того, как вы начали работу над проектом и написали какой-то работающий прототип, у вас появится желание сохранить результаты работы. Это так же может быть полезно в случае, если вы захотите продолжить работу на другом компьютере. Самое простое решение — это сохранить все на флешке. Этот вариант неплохо работает, но если есть подключение к интернету (а сейчас у кого его нет), то удобно воспользоваться системами Git/Github.

В этой статье будут описаны базовые сценарии использования систем Git/Github при работе над проектом в среде Linux с помощью командной строки. Все примеры проверялись на системе с Linux Ubuntu 14.04 и Git 1.9.1. Если вы пользуетесь другим дистрибутивом, то возможны отличия.

Создание локального репозитория

Предположим, что ваш проект находится в папке /home/user/project. Перед тем, как сохранять исходники, можно посмотреть, нет ли временных файлов в папке с проектом и по возможности их удалить.

Для просмотра папки удобно воспользоваться командой tree, которая покажет не только содержимое каждой папки, но и древовидную структуру директорий.

Часто временные файлы содержат специфические суффиксы, по которым их легко обнаружить и в последствии удалить. Для поиска таких файлов можно воспользоваться командой find. В качестве примера посмотрим, как найти все файлы, которые генерируются компилятором Python и имеют расширение .pyc

Переходим в папку с проектом /home/user/project:


И показываем список файлов с расширением .pyc:


Эта команда выведет список всех файлов с расширением .pyc в текущей директории и в ее поддиректориях. Для удаления найденных файлов, достаточно добавить ключ -delete к этой команде:


Очень рекомендуется не спешить и сразу ключ этот не добавлять. Первый раз вызвать команду для просмотра файлов и только убедившись, что в список не попало ничего полезного добавить ключ удаления.

Создадим локальный репозиторий в папке с проектом:


После выполнения этой команды появится новая папка с именем .git. В ней будет несколько файлов и поддиректориев. На данный момент система управления версиями еще не видит наших файлов.

Добавление файлов в локальный репозиторий

Для добавления файлов используется команда:


После выполнения команды, файл readme будет добавлен в систему управления версий (конечно если он уже был то этого в проекте). При добавлении файла генерируется хеш значение, которое выглядит примерно так:


Добавленные файлы хранятся в папке .git/objects/xx/yyyyyyyy, при этом первые 2 цифры хеша ипользуются для указания директории, а остальное хеш значение является именем файла. Наш добавленный файл будет находится здесь:


Что легко увидеть с помощью команды:


Сам файл является архивом, который легко распаковать и вывести на экран, указав полное значение хеша.


Для того, чтобы добавить все файлы из текущей директории введите:


Если нужно добавить файлы из текущей директории и из всех поддиректориев, то используйте:


Для того, чтобы в систему не попадали временные файлы, можно их занести в файл .gitignore, который нужно создать самостоятельно и разместить в корневом каталоге проекта (на том же уровне, что и .git директория).

Например, если в в файл .gitignore добавить следующую строчку *.pyc, то все файлы с расширением .pyc не будут добавляться в репозиторий.

После добавления файлов, все изменения находятся в так называемой staging (или cached) area. Это некоторое временнное хранилище, которое используется для накопления изменений и из которого создаются собственно версии проектов (commit).

Для просмотра текущего состояния можно воспользоваться командой:


После выполнения команды мы увидим, что в stage area находится наш файл:


Если вы продолжите вносить изменения в файл readme, то после вызова команды git status вы увидите две версии файла.


Чтобы добавить новые изменения достаточно повторить команду. Команда git add не только добавляет новые файлы, но и все изменения файлов, которые были добавлены ранее.


Можно отменить добавления файла readme в staging area с помощью команды:


После выполнения команды, файл readme отметится, как неизмененный системой.

Создание версии проекта

После того, как мы добавили нужные файлы в staging area мы можем создать версию проекта. С помощью команды:


Каждая новая версия сопровождается комментарием.

После коммита, мы сможем найти два новых объекта внутри .git репозитория.


Посмотрим, что внутри:


Ключ -t показывает тип объекта. В результате мы видим:


Для второго объекта:


Для самого первого файла:


Если мы будем дальше изучать содержимое этих файлов, то обнаружим древовидную структуру. От каждого коммита можно по ссылкам пройти по всем измененным файлам. Для практического применения это не очень нужно, но возможно так будет легче понять, что происходит при работе с системой Git.


Ключ --no-edit нужен, чтобы не вводить заново комментарий.

Можно просмотреть изменения, которые вы внесли последним коммитом:


Ключ --name-only нужен, чтобы показывать только имена измененный файлов. Без него по каждому измененнному файлу будет выдан список всех изменений.

Если вы продолжили работать и изменили только те файлы, которые были уже добавлены в систему командой git add, вы можете сделать коммит одной командой:


Для просмотра списка всех коммитов, воспользуйтесь командой:


Ключ --oneline нужен, чтобы уменьшить количество информации выдаваемой на экран. С этим ключем каждый коммит показывается в одну строчку. Например:


Для того, чтобы просмотреть изменения по конкретному коммиту, достаточно в команду git show добавить хеш значение коммита, которое можно получить с помощью предыдущей команды.


Для отмены последнего коммита (кроме самого первого) можно воспользоваться следующей командой:


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

Создание репозитория на Github

После регистрации нажимаем кнопочку "+" и вводим название репозитория. Выбираем тип Public (репозиторий всегда Public для бесплатной версии) и нажимаем Create.

В результате мы создали репозиторий на сайте Github. На экране мы увидим инструкцию, как соединить наш локальный репозиторий со вновь созданным. Часть команд нам уже знакома.

Добавляем удаленный репозиторий (по протоколу SSH) под именем origin (вместо origin можно использовать любое другое имя).


Можем просмотреть результат добавления с помощью команды:


Если все было правильно сделано, то увидим:


Для того, чтобы отменить регистрацию удаленного репозитария введите:


Следующей командой вы занесете все изменения, которые были сделаны в локальном репозитории на Github.


Ключ -u используется для того, чтобы установить связь между удаленным репозиторием github и вашей веткой master. Все дальнейшие изменения вы можете переносить на удаленный репозиторий упрощенной командой.

Перенос репозитория на другой компьютер

После того, как репозиторий был создан на Github, его можно скопировать на любой другой компьютер. Для этого применяется команда:


Результатом выполнения этой команды будет создание папки project в текущем каталоге. Эта папка также будет содержать локальный репозиторий (то есть папку .git).

Так же можно добавить название папки, в которой вы хотите разместить локальный репозиторий.

Работа с одним репозиторием с разных компьютеров

С одним репозиторием с разных компьютеров может работать несколько разработчиков или вы сами, если например работаете над одним и тем же проектом дома и на работе.

Для получения обновлений с удаленного репозитория воспользуйтесь командой:


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


Вместо github подставьте название вашего удаленного репозитория, которое вы зарегистрировали командой git push -u.

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


В случае, если в удаленном репозитории лежат файлы с версией более новой, чем у вас в локальном, то команда git push выдаст ошибку. Если вы уверены, что хотите перезаписать файлы в удаленном репозитории несмотря на конфликт версий, то воспользуйтесь командой:


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


После выполнения этой команды ваша локальная директория будет содержать файлы такие же, как и при последнем коммите. Вы можете загрузить новые файлы из удаленного репозитория командой git pull и после этого вернуть ваши изменения которые вы отложили командой:

Читайте также: