> 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/uk/baza-znan/040-git-integration.md).

# Інтеграція Git

**Git-інтеграція Overleaf** є [преміум-функцією](/latex/uk/baza-znan/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 дає змогу отримати Git-URL з вашого проєкту Overleaf і поводитися з ним як із віддаленим Git-репозиторієм (repo). Ви можете клонувати свій проєкт у локальний Git-репозиторій і працювати над ним локально, надсилаючи зміни з локального комп’ютера у свій проєкт і отримуючи оновлення, що відбуваються в онлайн-редакторі Overleaf, до свого локального repo.

Це дає змогу працювати над вашим проєктом локально в ті моменти, коли робота онлайн неможлива, використовувати інший локальний редактор на ваш вибір під час роботи над проєктом Overleaf або легко додавати результати з іншого локального програмного забезпечення до вашого проєкту Overleaf.

Ви можете отримати Git-URL і команду клонування для свого проєкту з опції Git у меню вашого проєкту Overleaf.

![Меню проєкту git.png](/files/100ae7eac0cc1a0e65789afe2c4ac9c60247da00)

### Як пройти автентифікацію під час використання Git-інтеграції

Коли ви виконуєте операцію Git, таку як clone, pull або push до вашого віддаленого проєкту Overleaf, вам буде запропоновано пройти автентифікацію.

Щоб отримати доступ до вашого проєкту Overleaf з Git, потрібно використовувати автентифікацію Overleaf на основі токенів. Покрокові інструкції див.: [Автентифікація на основі токенів](/latex/uk/baza-znan/042-git-integration-authentication-tokens.md).

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

З [**Меню**](/latex/uk/baza-znan/148-using-the-overleaf-project-menu.md) у межах вашого проєкту ви можете вибрати Git у параметрах синхронізації. Це відкриє діалогове вікно, яке показує `git clone` команду, яку слід використовувати під час створення локального репозиторію.

![Меню проєкту git.png](/files/100ae7eac0cc1a0e65789afe2c4ac9c60247da00)

Або ж ви можете знайти Git-URL з URL проєкту (URL у адресному рядку браузера, коли ви перебуваєте в проєкті).

#### Overleaf Cloud

Якщо ви використовуєте Overleaf Cloud і URL вашого проєкту Overleaf має такий вигляд:

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

Тоді Git-URL, який слід використовувати для клонування проєкту, буде

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

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

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

**Примітка**: вам може бути запропоновано ввести ім’я користувача та пароль. Будь ласка, див. [автентифікація за паролем для Git-інтеграції](/latex/uk/baza-znan/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
```

Тоді Git-URL, який використовується під час клонування проєкту, буде:

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

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

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

**Примітка**: вам може бути запропоновано ввести пароль. Будь ласка, дивіться: [токени автентифікації для Git-інтеграції](/latex/uk/baza-znan/042-git-integration-authentication-tokens.md)

### Створення проєкту Overleaf із наявного Git-репозиторію

Якщо у вас є наявний репозиторій, ви можете додати проєкт Overleaf як віддалений репозиторій. Нижче є кілька команд, які вам потрібно буде виконати, щоб почати роботу. Будь ласка, зауважте, що Overleaf підтримує лише одну лінійну історію для кожного проєкту. Git-інтеграція забезпечує це обмеження, обмежуючи кількість гілок однією. Наразі ця одна гілка жорстко зафіксована як `master`.

1. Спочатку припустімо, що у вас є Git-репозиторій на комп’ютері в папці з назвою `my-paper`. (Він також може бути розміщений на GitHub, GitLab або Bitbucket тощо, але вам потрібно мати його також клонованим локально.)
2. Створити [новий проєкт](/latex/uk/baza-znan/031-creating-a-document-in-overleaf.md) в Overleaf. Оскільки будь-який вміст у проєкті буде перезаписано, використайте опцію проєкту «Blank» під час створення цього проєкту та видаліть `main.tex` файл в Overleaf.
3. Знайдіть Git-URL для проєкту (див. [вище](#cloning-your-project-as-a-local-repository)).

   ![Git-bridge-url.png](/files/6f5d5946660e7c0a8e789aa73b03643d2d1c4e4c)
4. Додайте Git-URL проєкту як віддалений репозиторій у вашому локальному проєкті.

   ```
   $ 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/uk/inshi-temi/49-using-the-history-feature.md) яка дає змогу одночасну співпрацю в межах проєкту Overleaf. Це не те саме, що Git, тож Git-інтеграція Overleaf фактично є перекладом механізму історії та версійування Overleaf у Git. Це дає змогу багатьом сценаріям використання Git, але не дає змоги працювати в Overleaf так, ніби це повноцінна реалізація Git.

#### Коли створюються коміти?

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

#### Примусове створення комітів

Якщо ви хочете примусово створити коміт у певному місці історії Overleaf, ви можете зробити це, [призначивши мітку версії](/latex/uk/inshi-temi/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/uk/baza-znan/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/2769c4fb9a1a19aa38291ea202822578cd1d67c6)

### Додати проєкт 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/uk/baza-znan/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 і використання відстежуваних змін та/або коментарів.

### Усунення проблем

#### Помилки «Репозиторій не знайдено»

Якщо ви бачите помилку «Репозиторій не знайдено», імовірно, використовується неправильна URL-адреса. Правильну URL-адресу можна знайти, натиснувши опцію Git у меню всередині проєкту. Для Overleaf Cloud Git-інтеграція є преміальною функцією, тож вона буде доступна лише якщо власник проєкту має платну підписку на Overleaf або отримав доступ до цієї функції (наприклад, беручи участь у ранньому бета-тестуванні).

#### Помилки невдалої автентифікації

Будь ласка, перегляньте інструкції з усунення проблем для [токени автентифікації для Git-інтеграції](/latex/uk/baza-znan/042-git-integration-authentication-tokens.md) або [автентифікація за паролем для Git-інтеграції](/latex/uk/baza-znan/043-git-integration-password-based-authentication.md) залежно від того, який спосіб входу ви використовуєте.

#### Обмеження частоти

Обмеження частоти для Git Bridge зазвичай не виникає, коли операції Git виконуються вручну. Деякі Git-клієнти можна налаштувати так, щоб вони автоматично опитували віддалені репозиторії на наявність змін, що в деяких випадках може призвести до помилок через обмеження частоти. Зазвичай вимкнення будь-якого автоматизованого опитування або зменшення частоти операцій Git має вирішити ці проблеми.

#### Помилки під час надсилання посилань

Невдача під час надсилання деяких посилань до віддаленого проєкту може бути спричинена [перевищенням обмежень проєкту щодо розміру файлів або їх кількості](/latex/uk/baza-znan/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/uk/baza-znan/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.
