> For the complete documentation index, see [llms.txt](https://daymonri.gitbook.io/techwritersummary/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://daymonri.gitbook.io/techwritersummary/git/primer-sozdaniya-proekta.md).

# Пример создания проекта

### Создаём локальный репозиторий

Запускаем терминал **Git Bush** и переходим в папку, где хотим разместить локальный репозиторий (альтернативный вариант – сразу запустить Git Bush в нужной папке через ПКМ). Командой `mkdir` создаём папку в нужном каталоге, командой `cd` переходим в созданную папку.

<div align="left"><figure><img src="https://956387675-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FczgjL0lfenykQjm6DQfO%2Fuploads%2F9SztjyPPqtFM1U35XXFA%2Fimage.png?alt=media&amp;token=bab6bf3c-155a-471c-bc5f-852fdef1c278" alt="" width="370"><figcaption></figcaption></figure></div>

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

<div align="left"><figure><img src="https://956387675-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FczgjL0lfenykQjm6DQfO%2Fuploads%2FR9bNGOj3sFXGoYfzjYo4%2Fimage.png?alt=media&amp;token=f2f1a67e-0749-411d-a243-768c1d15ecac" alt="" width="563"><figcaption></figcaption></figure></div>

### Добавляем новый файл в репозиторий

Файл можно добавить вручную через графический интерфейс ОС, но в этом= примере мы используем команду `touch`. Открываем текстовый файл в блокноте с помощью команды `notepad`.

<div align="left"><figure><img src="https://956387675-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FczgjL0lfenykQjm6DQfO%2Fuploads%2FdQVcOyZktywvU8MBCUzM%2Fimage.png?alt=media&amp;token=78cf33be-ef99-47a0-ae57-ec8651efbb85" alt="" width="497"><figcaption></figcaption></figure></div>

Git не будет отслеживать созданный файл, если мы явно не сообщим ему об этом. Команда `git status` покажет, о существовании каких файлов знает git.

<div align="left"><figure><img src="https://956387675-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FczgjL0lfenykQjm6DQfO%2Fuploads%2FgFnMDCBRObR1PJQimQ36%2Fimage.png?alt=media&amp;token=f199aa12-7178-4834-b5f6-883261381dc0" alt="" width="563"><figcaption></figcaption></figure></div>

В выводе мы видим, что git заметил создание файла **newfile.txt**.

### Добавляем файл в индекс (стейджинг)

Для добавления файла в индекс выполняем команду `git add`. Если после этого выполнить команду `git status`, git скажет, что файл добавлен в индекс (строка "*Changes to be committed*").

<div align="left"><figure><img src="https://956387675-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FczgjL0lfenykQjm6DQfO%2Fuploads%2F97hxYwZMWzRqn3NyQhy9%2Fimage.png?alt=media&amp;token=85032423-4492-4aaa-9403-61f95f2f5e7c" alt="" width="444"><figcaption></figcaption></figure></div>

### Создаём коммит

Чтобы создать коммит, выполняем команду `git commit -m "Комментарий к коммиту"`.

<div align="left"><figure><img src="https://956387675-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FczgjL0lfenykQjm6DQfO%2Fuploads%2FXmMi4XUj0IXUPA9pRVJF%2Fimage.png?alt=media&amp;token=d4c09105-5874-4999-913c-cef373c1c806" alt="" width="431"><figcaption></figcaption></figure></div>

### Создаём новую ветку

Допустим, мы разрабатываем новую функцию, но не хотим вносить изменения в основной проект во время её разработки. Поэтому создаём новую ветку с помощью команды `git branch`` `*`название-ветки`*, а затем переходим в эту ветку командой `gir checkout`` `*`название-ветки`*.

<div align="left"><figure><img src="https://956387675-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FczgjL0lfenykQjm6DQfO%2Fuploads%2Fq5VCaxoG5lzIyVQa1P5T%2Fimage.png?alt=media&amp;token=71ce00e8-3ec9-40dd-9556-2a89532f9d85" alt="" width="509"><figcaption></figcaption></figure></div>

### Создаём репозиторий на GitHub

В главном меню **GitHub** слева (где список репозиториев) нажимаем «**New**» и заполняем информацию. Завершаем создание удалённого репозитория, нажав кнопку «**Create repository**».

<div align="left"><figure><img src="https://956387675-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FczgjL0lfenykQjm6DQfO%2Fuploads%2FS8QzR1OWPGh09TsDNlrr%2Fimage.png?alt=media&amp;token=6e24280c-f88c-4f60-9635-4199270112d5" alt=""><figcaption></figcaption></figure></div>

Переносим свой локальный репозиторий на GitHub с помощью команды `git remote add origin`` `*`URL-репозитория`*.

<div align="left"><figure><img src="https://956387675-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FczgjL0lfenykQjm6DQfO%2Fuploads%2F7nPG71MLqmqtwNst0wfp%2Fimage.png?alt=media&amp;token=2c13cb76-d492-4016-b3d4-3ad1e3efaca6" alt="" width="546"><figcaption></figcaption></figure></div>

### Переносим ветку из локального репозитория на GitHub

Чтобы перенести изменения в новую ветку на GitHub, выполняем команду `git push origin`` `*`название-ветки`*. GitHub автоматически создаст ветку в удалённом репозитории.

<div align="left"><figure><img src="https://956387675-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FczgjL0lfenykQjm6DQfO%2Fuploads%2FJ23DWKuFdzKeaj7N8zSH%2Fimage.png?alt=media&amp;token=49a84d5e-27e8-4a0d-8bd4-f6ae3eb37ec8" alt="" width="563"><figcaption></figcaption></figure></div>

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

### Создаём и принимаем запрос на извлечение

Отредактируем наш файл в ветке **my-new-branch**. Для этого можно воспользоваться встроенным редактором GitHub. После завершения редактирования нажимаем «**Commit changes...**», чтобы закоммитить изменения.

<div align="left"><figure><img src="https://956387675-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FczgjL0lfenykQjm6DQfO%2Fuploads%2FYUZHVsaEvoeGfItNIDac%2Fimage.png?alt=media&amp;token=480c0192-660a-42e0-bca1-19f69762abf4" alt=""><figcaption></figcaption></figure></div>

<div align="left"><figure><img src="https://956387675-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FczgjL0lfenykQjm6DQfO%2Fuploads%2FCABuyPYdA4mrHOlqj8at%2Fimage.png?alt=media&amp;token=7ac74836-5fe4-4c83-b925-e5437671fdb0" alt=""><figcaption></figcaption></figure></div>

Если запрос на извлечение создаёт другой член команды, мы увидим его в разделе «**Pull requests**». Чтобы принять запрос, нажимаем «**Compare & pull request**».

<div align="left"><figure><img src="https://956387675-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FczgjL0lfenykQjm6DQfO%2Fuploads%2FHz8z1DlG6HRXR94yujTd%2Fimage.png?alt=media&amp;token=9d95ca6a-f977-4e2b-bd61-5a38a786914f" alt=""><figcaption></figcaption></figure></div>

Если мы сами инициируем изменения, то после нажатия на кнопку «**Commit changes...**» у нас есть выбор – сразу добавить изменения в **main** или создать новую ветку. В этом примере мы создадим новую ветку (иначе нечего будет мержить).

<div align="left"><figure><img src="https://956387675-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FczgjL0lfenykQjm6DQfO%2Fuploads%2FkKTtXA3qW76WsD623Yo8%2Fimage.png?alt=media&amp;token=6319e821-01bc-490b-bb53-3a173113429e" alt=""><figcaption></figcaption></figure></div>

<div align="left"><figure><img src="https://956387675-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FczgjL0lfenykQjm6DQfO%2Fuploads%2FZlCiNw0RHNdv6Umw0UGa%2Fimage.png?alt=media&amp;token=b3790d97-9235-4f99-bd0c-546b59421d15" alt=""><figcaption></figcaption></figure></div>

Мержим изменения c main, нажав кнопку «**Merge pull request**», затем подтверждаем кнопкой «**Confirm merge**».

<div align="left"><figure><img src="https://956387675-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FczgjL0lfenykQjm6DQfO%2Fuploads%2Fzzk9hwAsMOZr2pHkw3ai%2Fimage.png?alt=media&amp;token=da762133-d742-4e0c-bb88-f7dc6042e35f" alt=""><figcaption></figcaption></figure></div>

<div align="left"><figure><img src="https://956387675-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FczgjL0lfenykQjm6DQfO%2Fuploads%2FJDkd6Zg62NTKqDmH6YOk%2Fimage.png?alt=media&amp;token=1562e200-a371-40d9-8adb-f2bfa2aa1f6f" alt=""><figcaption></figcaption></figure></div>

Git говорит, что мерж прошёл успешно и дополнительную ветку можно удалять.

<div align="left"><figure><img src="https://956387675-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FczgjL0lfenykQjm6DQfO%2Fuploads%2Fixh1kDeCcjEWhiYeGd9M%2Fimage.png?alt=media&amp;token=4535109f-b85e-4213-9571-6a0ba9d69615" alt=""><figcaption></figcaption></figure></div>

### Загружаем изменения из GitHub в локальный репозиторий

Коммит, который мы сделали в новой ветке и объединили с **main**, не существует в нашем локальном репозитории. Чтобы получить последние изменения с GitHub, выполним команду `git pull origin master` (при работе с main). В большинстве случаев это можно сократить до `git pull`.

<div align="left"><figure><img src="https://956387675-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FczgjL0lfenykQjm6DQfO%2Fuploads%2FQOxWFOwzuxFCMPAxZ8Fm%2Fimage.png?alt=media&amp;token=b9c93aaf-950c-4a3e-8244-f07c2c95fa19" alt="" width="527"><figcaption></figcaption></figure></div>

Здесь мы видим все файлы, которые были изменены, и как именно они изменились. Выполним команду `git log`, чтобы просмотреть все новые коммиты (если нужно переключиться на основную ветку, выполняем команду `git checkout master`).

<div align="left"><figure><img src="https://956387675-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FczgjL0lfenykQjm6DQfO%2Fuploads%2FyNhj4gyNGLxmgIxfBlrU%2Fimage.png?alt=media&amp;token=38bf7191-e326-485c-b8ed-ee3e82ad03d7" alt="" width="563"><figcaption></figcaption></figure></div>

**Pull request** успешно выполнен, изменения из новой ветки объединены с main, последние данные загружены в локальный репозиторий.
