> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/ru/baza-znanii/040-git-integration.md).

# Интеграция Git

**Интеграция Git в Overleaf** — это [премиум-функция](/latex/ru/baza-znanii/120-overleaf-premium-features.md). Премиум-функции Overleaf доступны участникам [Overleaf Commons](https://www.overleaf.com/for/universities), участникам группы [подписок](https://www.overleaf.com/for/groups), а также владельцам индивидуальных [подписок](https://www.overleaf.com/user/subscription/plans). Интеграция Git доступна в Overleaf Cloud и Overleaf Server Pro (версии 4.0 и выше).

### Что такое интеграция Git в Overleaf?

Интеграция Git в Overleaf позволяет получить URL Git для вашего проекта Overleaf и использовать его как удалённый репозиторий Git (repo). Вы можете клонировать свой проект в локальный репозиторий Git и работать над ним локально, отправляя изменения в свой проект со своего компьютера и получая обновления, происходящие в онлайн-редакторе Overleaf, в свой локальный репозиторий.

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

Вы можете получить URL Git и команду клонирования для своего проекта в разделе Git в меню вашего проекта Overleaf.

![Меню проекта git.png](/files/e4630a88d88d0e8d0558a439addb1b1c927ffe99)

### Как пройти аутентификацию при использовании интеграции Git

Когда вы выполняете операцию Git, такую как clone, pull или push, в свой удалённый проект Overleaf, вам будет предложено пройти аутентификацию.

Чтобы получить доступ к своему проекту Overleaf из Git, необходимо использовать аутентификацию Overleaf на основе токена. Пошаговые инструкции см.: [Аутентификация на основе токена](/latex/ru/baza-znanii/042-git-integration-authentication-tokens.md).

### Клонирование вашего проекта как локального репозитория

Из [**Меню**](/latex/ru/baza-znanii/148-using-the-overleaf-project-menu.md) внутри вашего проекта вы можете выбрать Git в параметрах синхронизации. Откроется диалоговое окно, показывающее `git clone` команду, которую следует использовать при создании локального репозитория.

![Меню проекта git.png](/files/e4630a88d88d0e8d0558a439addb1b1c927ffe99)

В качестве альтернативы, вы можете найти URL Git по URL проекта (URL в адресной строке браузера, когда вы находитесь в проекте).

#### Overleaf Cloud

Если вы используете Overleaf Cloud и URL вашего проекта Overleaf выглядит так:

```
https://www.overleaf.com/project/1234567
```

Тогда URL Git, который нужно использовать для клонирования проекта, будет

```
https://git.overleaf.com/1234567
```

А команда, используемая для клонирования проекта в локальный репозиторий Git, будет такой:

```
git clone https://git.overleaf.com/1234567
```

**Примечание**: вам может быть предложено ввести имя пользователя и пароль. См. [Аутентификация по паролю для интеграции Git](/latex/ru/baza-znanii/043-git-integration-password-based-authentication.md)

#### Overleaf Server Pro (версии 4.0 или выше)

**Примечание**: Интеграция Git-bridge по умолчанию не включена в Server Pro. См. нашу [Интеграция Git](https://github.com/overleaf/overleaf/wiki/Git-Integration) инструкцию по включению.

Если вы используете Overleaf Server Pro и URL вашего проекта выглядит так:

```
https://<SHARELATEX_SITE_URL>/project/1234567
```

Тогда URL Git, используемый при клонировании проекта, будет:

```
https://git@<SHARELATEX_SITE_URL>/git/1234567
```

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

```
git clone git@<SHARELATEX_SITE_URL>/git/1234567
```

**Примечание**: Вам может быть предложено ввести пароль. См.: [Токены аутентификации для интеграции Git](/latex/ru/baza-znanii/042-git-integration-authentication-tokens.md)

### Создание проекта Overleaf из существующего репозитория Git

Если у вас уже есть репозиторий, вы можете добавить проект Overleaf как удалённый репозиторий. Ниже приведено несколько команд, которые нужно выполнить, чтобы начать работу. Обратите внимание, что Overleaf поддерживает только одну линейную историю для каждого проекта. Интеграция Git реализует это ограничение, ограничивая число веток одной. Эта единственная ветка в настоящее время жёстко задана как `master`.

1. Сначала предположим, что у вас есть git-репозиторий на компьютере в папке с названием `my-paper`. (Он также может быть размещён на GitHub, GitLab, Bitbucket и т. д., но он также должен быть клонирован локально.)
2. Создать [новый проект](/latex/ru/baza-znanii/031-creating-a-document-in-overleaf.md) в Overleaf. Поскольку любое содержимое проекта будет перезаписано, при создании этого проекта используйте вариант проекта 'Blank' и удалите `main.tex` файл в Overleaf.
3. Найдите URL Git для проекта (см. [выше](#cloning-your-project-as-a-local-repository)).

   ![Git-bridge-url.png](/files/8b44e96e0201f2d2b11e854e2b2546d04a1540fb)
4. Добавьте URL Git для проекта как удалённый репозиторий в локальном проекте.

   ```
   $ cd my-paper
   $ git remote add overleaf <GIT-URL>
   ```

   (Обязательно используйте свою собственную ссылку, а не пример.)
5. Получите последнее содержимое из проекта Overleaf и объедините его с вашей веткой master.

   ```
   $ git checkout master
   $ git pull overleaf master --allow-unrelated-histories --rebase=false
   ```
6. Отправьте свой проект в Overleaf.

   ```
   $ git push overleaf master --set-upstream
   ```

   Если вы хотите использовать другое имя ветки локально, например `my-branch`, вы можете отправить изменения с помощью псевдонима:

   ```
   $ git push overleaf my-branch:master
   ```
7. Откройте проект в Overleaf. Ваши изменения должны быть там. (Возможно, вам придётся открыть меню проекта Overleaf, чтобы узнать, какой файл назначен основным документом, и, возможно, изменить этот первоначальный выбор.)

### Коммиты Git и интеграция Git в Overleaf

В Overleaf есть внутренняя [система истории](/latex/ru/drugie-temy/49-using-the-history-feature.md) которая позволяет совместную работу в проекте Overleaf. Это не то же самое, что Git, поэтому интеграция Git в Overleaf по сути является преобразованием механизма истории и версионирования Overleaf в Git. Это позволяет использовать множество сценариев с поддержкой Git, но не позволяет работать в Overleaf так, как если бы это была полноценная реализация Git.

#### Когда создаются коммиты?

Когда вы выполняете `pull` или `fetch` команду, если для текущего состояния проекта не существует коммита, новый коммит создаётся динамически. Когда вы `push` файлы из вашего локального репозитория в удалённый репозиторий Overleaf, в этот момент также создаётся коммит, который будет виден во всех будущих клонах проекта Overleaf. Когда вы или другие редактируете в Overleaf, коммиты не будут автоматически создаваться, пока это не потребуется.

#### Принудительное создание коммитов

Если вы хотите принудительно создать коммит в определённой точке истории Overleaf, это можно сделать, [пометив версию](/latex/ru/drugie-temy/49-using-the-history-feature.md) в истории Overleaf. У помеченной версии будет свой собственный хэш коммита, даже если вы не выполните git pull сразу. Коммит будет создан по метке только если не было других коммитов, сделанных позже точки истории Overleaf, которая помечается.

#### Отслеживание авторства

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

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

### Синхронизация с другим удалённым репозиторием

Интеграция Git в Overleaf позволяет вашему проекту Overleaf выступать в качестве удалённого репозитория для локальных репозиториев. Однако вы можете захотеть синхронизировать свой проект Overleaf с другим удалённым репозиторием, размещённым на GitHub, GitLab или другом сервисе хостинга Git.

Если вы синхронизируете свой проект с репозиторием, размещённым на GitHub (<https://github.com/>), вы можете захотеть использовать прямую [синхронизацию с GitHub](/latex/ru/baza-znanii/044-github-synchronization.md) функции.

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

Следуя приведённым выше инструкциям для [клонирования вашего проекта](#cloning-your-project-as-a-local-repository) или [привязки проекта к существующему репозиторию](#creating-an-overleaf-project-from-an-existing-git-repository), у вас будет локальный репозиторий, который может отправлять/получать изменения из Overleaf. Затем вы можете добавить к этому репозиторию второй удалённый источник, который указывает на ваш размещённый репозиторий. У локального репозитория должно быть два удалённых источника, чтобы он указывал и на ваш Git-хост, и на проект Overleaf.

Хотя прямой связи между проектом Overleaf и вашим репозиторием Git не будет, это позволит вам поддерживать их синхронизацию.

![Git other remote.png](/files/91a3b9faa49676f5c5975b5af39e5b953f3a160d)

### Добавить проект Overleaf как Git-подмодуль

Каждый проект в Overleaf действует как независимый репозиторий Git, но если вы хотите объединить несколько таких проектов в один репозиторий Git, вы можете обычным способом добавить репозиторий каждого проекта как Git-подмодуль. Затем вы сможете отдельно отправлять и получать каждый репозиторий-подмодуль в/из Overleaf и при этом иметь их объединёнными в виде подмодулей в более крупный проект.

**Примечание:** Хотя проекты Overleaf могут быть подмодулями в другом репозитории, сами проекты Overleaf не могут содержать другие подмодули.

### Известные ограничения

**Ветки**: Система Git в Overleaf не поддерживает ветвление.

**Символические ссылки**: Система Git в Overleaf плохо работает с символическими ссылками. Символическую ссылку можно отправить в проект Overleaf, но она будет преобразована в обычный файл и перезапишет локальную символическую ссылку при следующем получении проекта.

**Теги**: Система Git в Overleaf не поддерживает теги.

**Права доступа к файлам**: Система Git в Overleaf не сохраняет права на выполнение. Чтобы обойти это, вы можете выполнить `git config core.fileMode false` в локальном клоне репозитория. Затем вы можете сбросить права на выполнение для любых затронутых файлов. Так они не будут снова изменяться при последующих операциях Git.

**Git LFS:** Проекты Overleaf не поддерживают Git Large File Storage.

**Git-подмодули:** Проекты Overleaf могут выступать в качестве Git-подмодулей в других репозиториях, но не могут содержать другие Git-подмодули. Чтобы ссылаться на файлы из других проектов, рекомендуется использовать [функцию добавления из другого проекта](/latex/ru/baza-znanii/009-can-i-share-files-e.g.-.bib-and-some-graphics-across-my-projects.md).

**Переименование папок**: Если пользователь переименовывает папку и отправляет изменение в Overleaf, проект сохранит пустую папку со старым именем, помимо новой папки. (Например, переименование images/ в img/ оставит в проекте две папки: img/, содержащую файлы изображений, и images/, которая будет пустой. Это может вызвать проблемы, когда пользователь переименовывает папку и создаёт новый файл с тем же именем, что и старая папка, в одном коммите. Система Git в Overleaf отклонит этот коммит. В этом случае мы рекомендуем разделить коммит на две части и удалить оставшуюся папку.

**Переименование файлов и перемещение файлов:** Переименование файла в локальном репозитории на стороне Overleaf становится удалением и созданием. Это может привести к потере метаданных, связанных с файлом на стороне Overleaf, что вызывает удаление отслеживаемых изменений и комментариев. Не рекомендуется перемещать или переименовывать на стороне Git файлы, у которых в Overleaf есть отслеживаемые изменения или комментарии.

**Отслеживание изменений и комментарии**: К сожалению, отправка изменений из Git в Overleaf может привести к потере или смещению отслеживаемых изменений и комментариев; следовательно, мы не рекомендуем смешивать активное использование Git и использование отслеживаемых изменений и/или комментариев.

### Устранение неполадок

#### Ошибки «Репозиторий не найден»

Если вы видите ошибку Repository not found, вероятно, используется неправильный URL. Правильный URL можно найти, нажав пункт Git в меню внутри проекта. Для Overleaf Cloud интеграция Git — это премиум-функция, поэтому она будет доступна только если у владельца проекта есть платная подписка Overleaf или если ему был предоставлен доступ к этой функции (например, в рамках раннего бета-тестирования).

#### Ошибки аутентификации

См. инструкции по устранению неполадок для [Токены аутентификации для интеграции Git](/latex/ru/baza-znanii/042-git-integration-authentication-tokens.md) или [Аутентификация по паролю для интеграции Git](/latex/ru/baza-znanii/043-git-integration-password-based-authentication.md) в зависимости от того, какой способ входа вы используете.

#### Ограничения по частоте запросов

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

#### Ошибка отправки ссылок

Сбой при отправке некоторых ссылок в удалённый проект может быть вызван [превышением ограничений проекта по размеру файла или количеству файлов](/latex/ru/baza-znanii/119-overleaf-plan-limits.md) или включением неподдерживаемых типов файлов (например, символических ссылок или LFS). Пожалуйста, просмотрите перечисленные выше известные ограничения, чтобы выявить проблемные файлы в коммите.

В некоторых случаях увеличение **postBuffer** может помочь устранить сбои при отправке ссылок из локального репозитория в проект Overleaf.

Сначала вы можете проверить текущую настройку с помощью команды:

```
     git config http.postBuffer
```

Если вывода нет, это означает, что используется значение по умолчанию 1 МБ.

Затем попробуйте команду

```
     git config --global http.postBuffer 10485760
```

которая вместо этого установит значение 10 МБ.

Теперь вы можете попробовать отправить коммит (либо в исходный проект, либо в новый). Если это не сработает, вы можете вернуться к предыдущему значению или удалить настройку с помощью:

```
     git config --global --unset http.postBuffer
```

#### Тайм-ауты

Коммиты Git, включающие большое число изменений, потенциально могут приводить к тайм-аутам. Если вы столкнётесь с тайм-аутом, попробуйте разбить коммит на более мелкие изменения. Если проблема сохраняется, рассмотрите возможность установить **postBuffer** значение до 10 МБ, как описано выше.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/ru/baza-znanii/040-git-integration.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
