diff --git a/.github/workflows/directory_writer.yml b/.github/workflows/directory_writer.yml deleted file mode 100644 index 86389a2f..00000000 --- a/.github/workflows/directory_writer.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: "SENATOROV" -permissions: - contents: write -on: [push] -jobs: - docs: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - uses: actions/setup-python@v5 - with: - python-version: 3.x - - name: Set script executable permission - run: chmod +x scripts/build_directory_md.py - - name: Write DIRECTORY.md and README.md - run: | - scripts/build_directory_md.py 2>&1 | tee DIRECTORY.md - scripts/build_directory_md.py 2>&1 | tee README.md - git config --global user.name "$GITHUB_ACTOR" - git config --global user.email "$GITHUB_ACTOR@users.noreply.github.com" - git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/$GITHUB_REPOSITORY - - name: Commit and push changes - run: | - git add DIRECTORY.md README.md - git commit -m "SENATOROV updating DIRECTORY.md and README.md" || echo "No changes to commit" - git push --force origin ${{ github.ref_name }} diff --git a/.gitignore b/.gitignore index f55873c3..88e57d63 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ __pycache__/ # Distribution / packaging .Python +SENATOROV/ build/ develop-eggs/ dist/ @@ -247,87 +248,3 @@ coverage/ *.zip *.rar *.gif - -# Common binary file extensions - -# Images -*.png -*.jpg -*.jpeg -*.gif -*.bmp -*.tiff -*.ico -# Additional image formats -*.heic # High Efficiency Image File Format, commonly used by Apple - -# Audio -*.mp3 -*.wav -*.flac -*.aac -*.ogg -*.wma - -# Video -*.mp4 -*.avi -*.mkv -*.mov -*.wmv -*.flv -*.webm - -# Archives -*.zip -*.tar -*.gz -*.bz2 -*.rar -*.7z - -# Executables -*.exe -*.dll -*.so -*.bin -*.dylib - -# Compiled code -*.o -*.obj -*.class -*.jar -*.pyc -*.pyo -*.swf - -# Disk images -*.iso -*.img -*.vmdk - -# Fonts -*.ttf -*.otf -*.woff -*.woff2 - -# Documents -*.doc -*.docx -*.xls -*.xlsx -*.ppt -*.pptx -*.odt # OpenDocument Text -*.ods # OpenDocument Spreadsheet -*.odp # OpenDocument Presentation -*.rtf # Rich Text Format - -# Adobe Files -*.psd # Adobe Photoshop -*.ai # Adobe Illustrator -*.indd # Adobe InDesign -*.xd # Adobe XD - diff --git a/Algorithms/dir b/Algorithms/dir new file mode 100644 index 00000000..e69de29b diff --git a/Algorithms/files/dir b/Algorithms/files/dir new file mode 100644 index 00000000..e69de29b diff --git a/Math/dir b/Math/dir new file mode 100644 index 00000000..e69de29b diff --git a/Math/probability/theme_data.pdf b/Math/probability/theme_data.pdf new file mode 100644 index 00000000..1f13e774 Binary files /dev/null and b/Math/probability/theme_data.pdf differ diff --git a/Math/school_math/dir b/Math/school_math/dir new file mode 100644 index 00000000..e69de29b diff --git a/Python/dir b/Python/dir new file mode 100644 index 00000000..e69de29b diff --git a/Python/issues.ipynb b/Python/issues.ipynb new file mode 100644 index 00000000..2fe3700b --- /dev/null +++ b/Python/issues.ipynb @@ -0,0 +1,146 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "vscode": { + "languageId": "plaintext" + } + }, + "outputs": [], + "source": [ + "\"\"\"Part about issues.\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Общие вопросы\n", + "\n", + "Что такое Issues на GitHub и для чего они используются?\n", + "- **Issues** — это инструмент для отслеживания багов, задач и идей. Они помогают упорядочить процесс разработки и улучшения проекта.\n", + "\n", + "Чем Issues отличаются от других инструментов управления задачами?\n", + "- Прямая связь с кодом, коммитами и репозиторием. Возможность комментировать, создавать подзадачи (sub-issues) и автоматизировать закрытие.\n", + "\n", + "Какие основные компоненты (поля) есть у каждого Issue?\n", + "- **Title**, **Description**, **Comments**, **Labels**.\n", + "\n", + "---\n", + "\n", + "### Создание Issues\n", + "\n", + "Как создать новое Issue в репозитории?\n", + "1. Перейдите в нужный репозиторий.\n", + "2. Откройте вкладку **Issues**.\n", + "3. Нажмите кнопку **\"New Issue\"**.\n", + "4. Заполните все необходимые поля.\n", + "5. Нажмите кнопку **Submit new issue**.\n", + "\n", + "Какие данные рекомендуется указывать в описании Issue для лучшего понимания задачи?\n", + "- **Title** с подробным описанием проблемы.\n", + "- **Description** с более подробным описанием проблемы.\n", + "- Возможно приложить скриншоты, код или ссылки.\n", + "\n", + "Какие теги (labels) можно добавить к Issue? Какие из них стандартные?\n", + "- Стандартные метки: `bug`, `enhancement`, `documentation`, `question`.\n", + "\n", + "Как прикрепить Assignees (ответственных) к Issue?\n", + "- В правой части страницы найдите блок **Assignees** и выберите нужного пользователя.\n", + "\n", + "---\n", + "\n", + "### Работа с Issues.\n", + "\n", + "Как использовать Labels для классификации задач?\n", + "- Для каждого типа задач используйте соответствующую метку (например, `bug` для ошибок, `enhancement` для улучшений).\n", + "\n", + "Для чего нужен Milestone, и как связать его с Issue?\n", + "- **Milestone** указывает срок выполнения задачи. Чтобы связать Issue с Milestone, выберите его в соответствующем блоке справа.\n", + "\n", + "Как привязать Issue к пул-реквесту (Pull Request)?\n", + "- В описании Pull Request используйте ключевые слова, например: `Closes #номер_задачи`, `Fixes #номер_задачи`.\n", + "\n", + "Как добавить комментарий к существующему Issue?\n", + "- Выберите нужный Issue и нажмите внизу страницы **Leave a comment**.\n", + "\n", + "---\n", + "\n", + "### Закрытие и завершение Issues\n", + "\n", + "Как закрыть Issue вручную?\n", + "- Зайдите в Issues и нажмите кнопку **Close Issue**. Можно добавить комментарий.\n", + "\n", + "Можно ли автоматически закрыть Issue с помощью сообщения в коммите или пул-реквесте? Как это сделать?\n", + "- Да, для этого в коммите или в комментарии к Pull Request используйте специальные слова: `Closes`, `Fixes`, `Resolves`.\n", + "\n", + "Как повторно открыть закрытое Issue, если работа ещё не завершена?\n", + "- Откройте нужный Issue, нажмите кнопку **Reopen issue** и добавьте комментарий при необходимости.\n", + "\n", + "---\n", + "\n", + "### Фильтрация и поиск\n", + "\n", + "Как найти все открытые или закрытые Issues в репозитории?\n", + "- Перейдите в вкладку **Issues**. По умолчанию выводятся все открытые. Чтобы вывести закрытые, нажмите на фильтр **Closed**.\n", + "\n", + "Как использовать фильтры для поиска Issues по меткам, исполнителям или другим критериям?\n", + "- Используйте фильтры в интерфейсе GitHub.\n", + "\n", + "Как сортировать Issues по приоритету, дате создания или другим параметрам?\n", + "- Используйте кнопку **Newest** для сортировки по дате создания.\n", + "\n", + "---\n", + "\n", + "### Интеграции и автоматизация\n", + "\n", + "Как настроить автоматические уведомления о новых или изменённых Issues?\n", + "- Зайдите в нужный репозиторий, нажмите на значок глаза (**Watch**), выберите **Custom** → **Issues**.\n", + "\n", + "Что такое Projects в контексте GitHub, и как связать их с Issues?\n", + "- **Projects** — это инструмент для управления задачами и Pull Request'ами, которые оформляются в виде карточек. К карточке можно привязать Issue.\n", + "\n", + "Какие сторонние инструменты можно использовать для автоматизации работы с Issues (например, боты, Webhooks)?\n", + "- Можно использовать встроенный **GitHub Actions** для автоматизации добавления меток, назначения исполнителей и других задач.\n", + "\n", + "---\n", + "\n", + "### Коллаборация\n", + "\n", + "Как упомянуть другого пользователя в комментарии к Issue?\n", + "- Упомяните его через `@username`.\n", + "\n", + "Как запросить дополнительные данные или уточнения у автора Issue?\n", + "- Через комментарии в самом Issue.\n", + "\n", + "Что делать, если Issue неактуально или его нужно объединить с другим?\n", + "- Сначала закройте неактуальный Issue, а затем добавьте комментарий в оба Issue, объясняя причину объединения.\n", + "\n", + "---\n", + "\n", + "### Практические аспекты\n", + "\n", + "Как использовать шаблоны для создания Issues?\n", + "- Поместите шаблон в папку `.github/ISSUE_TEMPLATE/`.\n", + "\n", + "Что такое Linked Issues, и как создать связь между задачами?\n", + "- **Linked Issues** — это функция для связывания Issues между собой. В комментарии к Issue упомяните связанное Issue с помощью `#`.\n", + "\n", + "Какие метрики (например, время выполнения) можно отслеживать с помощью Issues?\n", + "- Количество открытых/закрытых Issues, среднее время закрытия Issue, количество Issues по исполнителям.\n", + "\n", + "Какие best practices рекомендуются при работе с Issues в команде?\n", + "- Четко формулировать заголовки и описания, использовать метки, Milestones, Linked Issues." + ] + } + ], + "metadata": { + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Python/issues.py b/Python/issues.py new file mode 100644 index 00000000..7b28b2d3 --- /dev/null +++ b/Python/issues.py @@ -0,0 +1,118 @@ +"""Part about issues.""" + +# ### Общие вопросы +# +# Что такое Issues на GitHub и для чего они используются? +# - **Issues** — это инструмент для отслеживания багов, задач и идей. Они помогают упорядочить процесс разработки и улучшения проекта. +# +# Чем Issues отличаются от других инструментов управления задачами? +# - Прямая связь с кодом, коммитами и репозиторием. Возможность комментировать, создавать подзадачи (sub-issues) и автоматизировать закрытие. +# +# Какие основные компоненты (поля) есть у каждого Issue? +# - **Title**, **Description**, **Comments**, **Labels**. +# +# --- +# +# ### Создание Issues +# +# Как создать новое Issue в репозитории? +# 1. Перейдите в нужный репозиторий. +# 2. Откройте вкладку **Issues**. +# 3. Нажмите кнопку **"New Issue"**. +# 4. Заполните все необходимые поля. +# 5. Нажмите кнопку **Submit new issue**. +# +# Какие данные рекомендуется указывать в описании Issue для лучшего понимания задачи? +# - **Title** с подробным описанием проблемы. +# - **Description** с более подробным описанием проблемы. +# - Возможно приложить скриншоты, код или ссылки. +# +# Какие теги (labels) можно добавить к Issue? Какие из них стандартные? +# - Стандартные метки: `bug`, `enhancement`, `documentation`, `question`. +# +# Как прикрепить Assignees (ответственных) к Issue? +# - В правой части страницы найдите блок **Assignees** и выберите нужного пользователя. +# +# --- +# +# ### Работа с Issues. +# +# Как использовать Labels для классификации задач? +# - Для каждого типа задач используйте соответствующую метку (например, `bug` для ошибок, `enhancement` для улучшений). +# +# Для чего нужен Milestone, и как связать его с Issue? +# - **Milestone** указывает срок выполнения задачи. Чтобы связать Issue с Milestone, выберите его в соответствующем блоке справа. +# +# Как привязать Issue к пул-реквесту (Pull Request)? +# - В описании Pull Request используйте ключевые слова, например: `Closes #номер_задачи`, `Fixes #номер_задачи`. +# +# Как добавить комментарий к существующему Issue? +# - Выберите нужный Issue и нажмите внизу страницы **Leave a comment**. +# +# --- +# +# ### Закрытие и завершение Issues +# +# Как закрыть Issue вручную? +# - Зайдите в Issues и нажмите кнопку **Close Issue**. Можно добавить комментарий. +# +# Можно ли автоматически закрыть Issue с помощью сообщения в коммите или пул-реквесте? Как это сделать? +# - Да, для этого в коммите или в комментарии к Pull Request используйте специальные слова: `Closes`, `Fixes`, `Resolves`. +# +# Как повторно открыть закрытое Issue, если работа ещё не завершена? +# - Откройте нужный Issue, нажмите кнопку **Reopen issue** и добавьте комментарий при необходимости. +# +# --- +# +# ### Фильтрация и поиск +# +# Как найти все открытые или закрытые Issues в репозитории? +# - Перейдите в вкладку **Issues**. По умолчанию выводятся все открытые. Чтобы вывести закрытые, нажмите на фильтр **Closed**. +# +# Как использовать фильтры для поиска Issues по меткам, исполнителям или другим критериям? +# - Используйте фильтры в интерфейсе GitHub. +# +# Как сортировать Issues по приоритету, дате создания или другим параметрам? +# - Используйте кнопку **Newest** для сортировки по дате создания. +# +# --- +# +# ### Интеграции и автоматизация +# +# Как настроить автоматические уведомления о новых или изменённых Issues? +# - Зайдите в нужный репозиторий, нажмите на значок глаза (**Watch**), выберите **Custom** → **Issues**. +# +# Что такое Projects в контексте GitHub, и как связать их с Issues? +# - **Projects** — это инструмент для управления задачами и Pull Request'ами, которые оформляются в виде карточек. К карточке можно привязать Issue. +# +# Какие сторонние инструменты можно использовать для автоматизации работы с Issues (например, боты, Webhooks)? +# - Можно использовать встроенный **GitHub Actions** для автоматизации добавления меток, назначения исполнителей и других задач. +# +# --- +# +# ### Коллаборация +# +# Как упомянуть другого пользователя в комментарии к Issue? +# - Упомяните его через `@username`. +# +# Как запросить дополнительные данные или уточнения у автора Issue? +# - Через комментарии в самом Issue. +# +# Что делать, если Issue неактуально или его нужно объединить с другим? +# - Сначала закройте неактуальный Issue, а затем добавьте комментарий в оба Issue, объясняя причину объединения. +# +# --- +# +# ### Практические аспекты +# +# Как использовать шаблоны для создания Issues? +# - Поместите шаблон в папку `.github/ISSUE_TEMPLATE/`. +# +# Что такое Linked Issues, и как создать связь между задачами? +# - **Linked Issues** — это функция для связывания Issues между собой. В комментарии к Issue упомяните связанное Issue с помощью `#`. +# +# Какие метрики (например, время выполнения) можно отслеживать с помощью Issues? +# - Количество открытых/закрытых Issues, среднее время закрытия Issue, количество Issues по исполнителям. +# +# Какие best practices рекомендуются при работе с Issues в команде? +# - Четко формулировать заголовки и описания, использовать метки, Milestones, Linked Issues. diff --git a/Python/venv.ipynb b/Python/venv.ipynb new file mode 100644 index 00000000..3ca61d29 --- /dev/null +++ b/Python/venv.ipynb @@ -0,0 +1,102 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\"\"\"Part about venv.\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Команды для работы с виртуальными окружениями в Python\n", + "\n", + "### 1. Команда `python -m venv venv`\n", + "Создает в папке проекта папку с виртуальным окружением.\n", + "\n", + "#### 1.1 Команды для работы с `pip`\n", + "- `pip list` — выводит список и версии всех пакетов Python, которые установлены в текущей среде.\n", + "- `pip freeze > requirements.txt` — записывает список всех установленных пакетов с их версиями в файл `requirements.txt`.\n", + "- `pip install -r requirements.txt` — устанавливает все пакеты из файла `requirements.txt`.\n", + "\n", + "### 2. Команды для работы с `conda`\n", + "- `conda env list` — выводит список всех сред Conda, созданных на компьютере.\n", + "- `conda create -n env_name python=3.5` — создает новую среду Conda с именем `env_name` и устанавливает в ней Python версии 3.5.\n", + "- `conda env update -n env_name -f file.yml` — обновляет среду Conda с именем `env_name` на основе файла `file.yml`. Файл `file.yml` должен содержать описание среды, включая пакеты и их версии. Флаг `-n` указывает имя среды, а `-f` — файл, содержащий описание среды.\n", + "- `source activate env_name` — активирует среду Conda с именем `env_name`. В Windows используется команда `conda activate env_name`.\n", + "- `source deactivate` — деактивирует текущую среду Conda и возвращает вас к базовой среде. В Windows используется команда `conda deactivate`.\n", + "- `conda clean -a` — удаляет все пакеты, которые больше не используются в любой среде Conda, а также очищает кэш пакетов. Флаг `-a` означает \"all\" и указывает на то, что необходимо удалить все неиспользуемые пакеты и очистить весь кэш.\n", + "\n", + "### 3. Активация окружений\n", + "Вставьте скрин вашего терминала, где вы активировали сначала `venv`, потом `conda`, назовите окружение \"SENATOROV\".\n", + "\n", + "\n", + "\n", + "\n", + "### 4. Установка пакетов в виртуальное окружение\n", + "- **conda**:\n", + " - conda create -n SENATOROV python=3.13\n", + " - conda activate SENATOROV\n", + "- **venv**:\n", + " - python -m venv SENATOROV\n", + " - SENATOROV\\Scripts\\activate\n", + " - pip install -r requirements.txt\n", + "\n", + "### 5. Экспорт зависимостей\n", + "- `pip freeze > requirements.txt` — записывает список всех установленных пакетов с их версиями в файл `requirements.txt`.\n", + "- `conda env export > environment.yml` — экспортирует текущую среду Conda в файл `environment.yml`. Этот файл содержит полное описание среды, включая все установленные пакеты и их версии.\n", + "\n", + "#### 5.1 Пример выполнения команды\n", + "\n", + "\n", + "### 6. Установка зависимостей из файлов\n", + "- `pip install -r requirements.txt` — устанавливает все зависимости (библиотеки и пакеты), перечисленные в файле `requirements.txt`.\n", + "- `conda env create -f environment.yml` — создает виртуальное окружение с помощью Conda на основе файла `environment.yml`.\n", + "\n", + "### 7. Информация о пакетах\n", + "- `pip list` — выводит список всех пакетов, установленных в текущем Python-окружении, вместе с их версиями.\n", + "- `pip show` — выводит подробную информацию о конкретном установленном пакете.\n", + "- `conda list` — выводит список всех пакетов, установленных в текущем Conda-окружении.\n", + "\n", + "### 8. Сравнение `venv/pip` и `conda`\n", + "- **Количество пакетов**: Пакетов больше в `venv`. Однако в Conda есть свой репозиторий с пакетами для многих языков программирования, что делает ее более привлекательной для data scientists при разработке сложных проектов. Кроме того, Conda сама управляет зависимостями.\n", + "\n", + "### 9. Пример выполнения команды\n", + "\n", + "\n", + "### 11. Зачем нужно виртуальное окружение?\n", + "- Изолирует зависимости.\n", + "- Обеспечивает легкость переноса проекта.\n", + "- Управляет версиями Python.\n", + "\n", + "### 12. Ответ\n", + "ДА" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "base", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.7" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Python/venv.py b/Python/venv.py new file mode 100644 index 00000000..cf4d18fe --- /dev/null +++ b/Python/venv.py @@ -0,0 +1,64 @@ +"""Part about venv.""" + +# ### Команды для работы с виртуальными окружениями в Python +# +# ### 1. Команда `python -m venv venv` +# Создает в папке проекта папку с виртуальным окружением. +# +# #### 1.1 Команды для работы с `pip` +# - `pip list` — выводит список и версии всех пакетов Python, которые установлены в текущей среде. +# - `pip freeze > requirements.txt` — записывает список всех установленных пакетов с их версиями в файл `requirements.txt`. +# - `pip install -r requirements.txt` — устанавливает все пакеты из файла `requirements.txt`. +# +# ### 2. Команды для работы с `conda` +# - `conda env list` — выводит список всех сред Conda, созданных на компьютере. +# - `conda create -n env_name python=3.5` — создает новую среду Conda с именем `env_name` и устанавливает в ней Python версии 3.5. +# - `conda env update -n env_name -f file.yml` — обновляет среду Conda с именем `env_name` на основе файла `file.yml`. Файл `file.yml` должен содержать описание среды, включая пакеты и их версии. Флаг `-n` указывает имя среды, а `-f` — файл, содержащий описание среды. +# - `source activate env_name` — активирует среду Conda с именем `env_name`. В Windows используется команда `conda activate env_name`. +# - `source deactivate` — деактивирует текущую среду Conda и возвращает вас к базовой среде. В Windows используется команда `conda deactivate`. +# - `conda clean -a` — удаляет все пакеты, которые больше не используются в любой среде Conda, а также очищает кэш пакетов. Флаг `-a` означает "all" и указывает на то, что необходимо удалить все неиспользуемые пакеты и очистить весь кэш. +# +# ### 3. Активация окружений +# Вставьте скрин вашего терминала, где вы активировали сначала `venv`, потом `conda`, назовите окружение "SENATOROV". +# +#  +#  +# +# ### 4. Установка пакетов в виртуальное окружение +# - **conda**: +# - conda create -n SENATOROV python=3.13 +# - conda activate SENATOROV +# - **venv**: +# - python -m venv SENATOROV +# - SENATOROV\Scripts\activate +# - pip install -r requirements.txt +# +# ### 5. Экспорт зависимостей +# - `pip freeze > requirements.txt` — записывает список всех установленных пакетов с их версиями в файл `requirements.txt`. +# - `conda env export > environment.yml` — экспортирует текущую среду Conda в файл `environment.yml`. Этот файл содержит полное описание среды, включая все установленные пакеты и их версии. +# +# #### 5.1 Пример выполнения команды +#  +# +# ### 6. Установка зависимостей из файлов +# - `pip install -r requirements.txt` — устанавливает все зависимости (библиотеки и пакеты), перечисленные в файле `requirements.txt`. +# - `conda env create -f environment.yml` — создает виртуальное окружение с помощью Conda на основе файла `environment.yml`. +# +# ### 7. Информация о пакетах +# - `pip list` — выводит список всех пакетов, установленных в текущем Python-окружении, вместе с их версиями. +# - `pip show` — выводит подробную информацию о конкретном установленном пакете. +# - `conda list` — выводит список всех пакетов, установленных в текущем Conda-окружении. +# +# ### 8. Сравнение `venv/pip` и `conda` +# - **Количество пакетов**: Пакетов больше в `venv`. Однако в Conda есть свой репозиторий с пакетами для многих языков программирования, что делает ее более привлекательной для data scientists при разработке сложных проектов. Кроме того, Conda сама управляет зависимостями. +# +# ### 9. Пример выполнения команды +#  +# +# ### 11. Зачем нужно виртуальное окружение? +# - Изолирует зависимости. +# - Обеспечивает легкость переноса проекта. +# - Управляет версиями Python. +# +# ### 12. Ответ +# ДА diff --git a/code_review/dir b/code_review/dir new file mode 100644 index 00000000..e69de29b diff --git a/docs/git/git_command.py b/docs/git/git_command.py new file mode 100644 index 00000000..ec244539 --- /dev/null +++ b/docs/git/git_command.py @@ -0,0 +1,60 @@ +"""Конспект базовых команд Git и их описание. + +Этот ноутбук содержит основные команды Git, сгруппированные по категориям: +- Базовые команды +- Просмотр изменений +- Работа с журналом +- Отмена изменений +- Работа с файлами +- Работа с GitHub +- Дополнительные команды. +""" + +# +# +# +# +# # Основные команды Git +# +# ## Базовые команды +# - `git init` - создать новый репозиторий +# - `git clone` - копировать существующий репозиторий +# - `git add <файл>` - добавить файл для отслеживания +# - `git add .` - добавить все файлы +# - `git commit -m "сообщение"` - сохранить изменения +# - `git commit -am "сообщение"` - добавить и сохранить изменения +# - `git status` - проверить статус файлов +# - `git --version` - проверить версию Git +# +# ## Просмотр изменений +# - `git diff` - показать несохраненные изменения +# - `git diff file.py` - изменения в конкретном файле +# - `git difftool` - открыть изменения в графическом интерфейсе +# +# ## Работа с журналом +# - `git log` - просмотр полного журнала +# - `git log --oneline` - сокращенный формат +# - `git log -n 3` - последние 3 коммита +# - `git show хеш:файл.txt` - содержимое файла в коммите +# +# ## Отмена изменений +# - `git restore file.txt` - отменить несохраненные изменения +# - `git restore --staged file.txt` - убрать из индекса +# - `git checkout .` - отменить все изменения +# - `git revert -n HEAD~3..HEAD` - отменить последние 3 коммита +# - `git checkout хеш -- файл.py` - вернуть к определенной версии +# +# ## Работа с файлами +# - `git rm file.txt` - удалить файл +# - `git mv старый.txt новый.txt` - переименовать/переместить файл +# +# ## Работа с GitHub +# - `git remote add origin URL` - привязать удаленный репозиторий +# - `git push -u origin master` - первая отправка на GitHub +# - `git push` - отправить изменения +# - `git clone URL` - клонировать репозиторий +# +# ## Дополнительные команды +# - `git help <команда>` - получить справку +# - `git <команда> --help` - альтернативный вызов справки +# - `git ls-files --other --ignored --exclude-standard` - показать игнорируемые файлы diff --git a/docs/git/intro_to_git.py b/docs/git/intro_to_git.py new file mode 100644 index 00000000..a2d8e660 --- /dev/null +++ b/docs/git/intro_to_git.py @@ -0,0 +1,806 @@ +"""Git и организация программных проектов.""" + +#
Системы контроля версий представляют собой программные средства, которые регистрируют все изменения в исходном коде и позволяют легко восстановить старые версии.
+#Система контроля версий управляет файлами при внесении в них изменений.
+#Git, Mercurial и Subversion — популярные приложения контроля версий, хотя система Git остается самой популярной.
+ +# ### Коммиты и репозитории +#Git позволяет сохранить состояние файлов проекта при внесении в них изменений. Такие сохранения называются снимками (snapshots) или коммитами (commits).
+#Системы контроля версий также позволяют команде разработчиков синхронизировать свою работу при внесении изменений в исходный код проекта. Когда каждый программист закрепляет свои изменения, другие могут извлекать эти обновления на своих компьютерах. Система контроля версий следит за тем, какие изменения были внесены, кто и когда их сделал, а также сохраняет комментарии разработчиков, описывающие эти изменения.
+#Система контроля версий управляет исходным кодом проекта, который хранится в специальной папке — репозитории (repo). Как правило, для каждого проекта, над которым вы работаете, следует создать отдельный репозиторий Git. Предположим, вы работаете в основном самостоятельно над своей частью программы и вам не нужны расширенные возможности Git (такие как ветвление и слияние), упрощающие работу с остальными участниками. Но даже если вы работаете в одиночку, самый маленький проект все равно выиграет от применения системы контроля версий.
+ +# ### Создание новых проектов Python с использованием Cookiecutter +#В терминологии Git папка, содержащая весь исходный код, документацию, тесты и другие файлы, относящиеся к проекту, называется рабочим каталогом или рабочим деревом, а в более общей терминологии — папкой проекта. Файлы в рабочем каталоге в совокупности называются рабочей копией.
+# +#Прежде чем создавать репозиторий Git, следует создать файлы для проекта Python.
+# +#Для проектов Python действуют определенные соглашения по поводу имен папок и иерархий. Более простая программа может содержать один файл .py. Но когда проекты усложнятся, в них будут включаться дополнительные файлы .py, файлы данных, документация, модульные тесты и т. д. Как правило, корневая папка проекта содержит папку src для файлов с исходным кодом .py, папку tests для модульных тестов и папку docs для документации (например, сгенерированной системой документирования Sphinx). Другие файлы содержат информацию о проекте и конфигурации системы: README.md для общей информации, .coveragerc для конфигурации покрытия кода, LICENSE.txt для текста программной лицензии проекта и т. д.
+# +#Чтобы ускорить выполнение рутинных операций, можно использовать модуль Python cookiecutter для автоматического создания этих файлов и папок. Полная документация по модулю и программе командной строки Cookiecutter доступна на https://cookiecutter.readthedocs.io/.
+# +#Если вы не знаете, для чего нужны те или иные файлы, не огорчайтесь. Хотя полное описание назначения каждого файла выходит за рамки книги, на странице https://github.com/asweigart/cookiecutter-basicpythonproject присутствуют ссылки и нужная информация. Итак, базовые файлы созданы, и мы переходим к отслеживанию изменений в них в системе Git.
+ +#  + +# ### Установка Git +# +#Git уже установлена на моем компьютере.
+# +#Чтобы узнать это, введите команду `git --version` в командной строке.
+# +#У меня выводится: `git version 2.45.0.windows.1`
+ +# ## Работа с Git +# +# Работа с репозиторием Git состоит из нескольких этапов: +# +# 1. Создание репозитория: +# - Командой `git init` для нового проекта +# - Или `git clone` для копирования существующего +# +# 2. Добавление файлов для отслеживания: +# - Используется команда `git add <имя_файла>` +# - Можно добавить все файлы: `git add .` +# +# 3. Сохранение изменений: +# - Команда `git commit -am "<сообщение коммита>"` +# - В сообщении описывается содержание изменений +# + +# +# ### Справка по командам +# +# Для получения справки по любой команде используйте: +# +# Чтобы получить справку по командам в GitHub, можно использовать команду «git help». 24 Она предоставляет обзор доступных команд и способов их использования. +# +# Ещё несколько способов открыть страницу руководства по конкретной команде Git: +# +# git help <команда>. 45 Например, чтобы получить справку по команде commit, нужно выполнить: git help commit. +# git <команда> --help. Например, так можно открыть руководство по команде git config: git config --help. +# man git-<команда>. 45 Например, чтобы просмотреть страницу руководства по конкретной команде Git, нужно ввести: man git-config. +# +# Если нужна персональная помощь, можно попробовать поискать её на каналах #git и #github IRC сервера Libera Chat, который доступен по адресу libera.chat. + +# ## Как Git отслеживает статус файлов +# +# ### Основные состояния файлов +# +# 1. **Неотслеживаемые (Untracked)**: +# - Файлы, которые Git не видит +# - Для Git эти файлы не существуют +# - Нужно добавить через `git add` +# +# 2. **Отслеживаемые (Tracked)** файлы имеют три состояния: +# - **Сохраненные (Committed)**: идентичны последнему коммиту +# - **Измененные (Modified)**: отличаются от последнего коммита +# - **Индексированные (Staged)**: помечены для следующего коммита +# +# ### Переходы между состояниями +# +# 1. Неотслеживаемый → Индексированный: +# - Используется `git add <файл>` +# +# 2. Сохраненный → Измененный: +# - Происходит автоматически при изменении файла +# - Не требует команд Git +# +# 3. Измененный → Индексированный: +# - Используется `git add <файл>` +# +# 4. Индексированный → Сохраненный: +# - Используется `git commit` +# +# ### Проверка статуса +# Команда `git status` +# +# ### Важные заметки: +# - Команду `git status` рекомендуется использовать часто +# - Git подсказывает команды для изменения состояния файлов +# - Файл может находиться только в одном состоянии + +# +# + +# ## Для чего нужно индексирование? +# +# ### Сложности индексирования +# +# 1. **Особые случаи**: +# - Файл может быть одновременно в измененном и индексированном состоянии +# - Разные части файла могут иметь разные состояния +# - Технически индексируются не файлы, а описания изменений +# +# 2. **Проблемы для новичков**: +# - Вызывает недоумение +# - Создает путаницу +# - Усложняет понимание Git +# - Часто описывается неточно в документации +# +# ### Как упростить работу +# +# 1. **Использовать команду `git commit -am`**: +# - Объединяет индексирование и коммит +# - Файлы переходят сразу из измененного в чистое состояние +# - Упрощает процесс сохранения +# +# 2. **Рекомендации по работе**: +# - Сразу сохранять файлы после добавления +# - Немедленно коммитить после переименования +# - Не откладывать коммиты после удаления файлов +# +# 3. **Альтернативные решения**: +# - Использовать графические интерфейсы Git +# - Избегать сложных случаев +# - Придерживаться простых сценариев использования + +# ## Создание репозитория Git на компьютере +# +# ### Особенности Git как распределенной системы +# +# 1. **Локальное хранение**: +# - Все коммиты хранятся на компьютере +# - Метаданные в папке `.git` +# - Не требует подключения к интернету +# - Быстрая работа даже офлайн +# +# ### Создание нового репозитория + +# 1. **Создание папки и инициализация**: +# +# # Для Windows: +# md wizcoin +# +# # Для macOS/Linux: +# # mkdir wizcoin +# +# # Для всех систем: +# # cd wizcoin +# git init + +# 2. **Что происходит при инициализации (git init)**: +# - В папке создается скрытая подпапка `.git` +# - Эта папка превращается в Git-репозиторий +# - Все существующие файлы становятся неотслеживаемыми (untracked) +# - В `.git` хранятся все данные о версиях (не нужно редактировать вручную!) +# +# ### Типы репозиториев +# +# 1. **Локальный репозиторий**: +# - На вашем компьютере +# - Для личной работы +# +# 2. **Удаленный репозиторий**: +# - На другом компьютере +# - Для совместной работы +# +# ### Мониторинг статуса (watch) +# +# watch - это утилита, которая: Что делает: +# Автоматически повторяет команду +# Показывает результат каждые 2 секунды +# Обновляет экран автоматически +# Как "живой" мониторинг +# +# Зачем это нужно: +# Не надо постоянно вводить git status +# Видишь изменения сразу +# Удобно следить за репозиторием +# Как "радар" для Git +# +# +# 1. **Установка watch**: +# - Windows: скачать с https://inventwithpython.com/watch.exe +# - macOS: через MacPorts +# - Linux: предустановлен +# +# 2. **Использование**: +# watch "git status" # обновление каждые 2 секунды +# watch "git log --oneline" # мониторинг коммитов + +# + +# ### Добавление файлов для отслеживания +# +# 1. **Проверка статуса файлов**: +# - Команда `git status` показывает состояние файлов +# - Неотслеживаемые файлы помечены как "Untracked files" +# - Git не может сохранять неотслеживаемые файлы +# - Нужно сначала добавить их для отслеживания +# +# 2. **Процесс добавления файлов**: +# - Сначала `git add` (индексирование файлов) +# - Затем `git commit` (создание коммита) +# - После этого Git начинает отслеживать файлы +# +# 3. **Способы использования git add**: +# - `git add file.txt` - добавить один файл +# - `git add *.py` - добавить все Python файлы +# - `git add .` - добавить все файлы в текущей папке +# +# 4. **Создание коммита**: +# - `git commit -m "Сообщение коммита"` - сохраняет индексированные файлы +# - В сообщении описываем, какие изменения внесли +# - После коммита файлы становятся отслеживаемыми +# +# 5. **Важные замечания**: +# - Файлы из `.gitignore` автоматически пропускаются +# - Можно добавлять файлы группами +# - Каждый коммит требует сообщения +# - После успешного коммита рабочая директория "чистая" + +# + +# ### Игнорирование файлов в Git (.gitignore) +# +# 1. **Зачем игнорировать файлы**: +# - Временные файлы проекта +# - Компилированные файлы (`.pyc`, `.pyo`, `.pyd`) +# - Папки инструментов разработки (`.tox`, `htmlcov`) +# - Сгенерированные файлы (можно создать заново) +# - Файлы с конфиденциальными данными (пароли, токены) +# +# 2. **Как использовать .gitignore**: +# - Создать файл `.gitignore` в корне проекта +# - Записать в него шаблоны игнорируемых файлов +# - Git автоматически пропустит эти файлы при `git add` и `git commit` +# - Файлы не будут показываться в `git status` +# +# 3. **Синтаксис .gitignore**: +# ``` +# # Комментарий +# __pycache__/ # Игнорировать папку +# *.py[cod] # Игнорировать файлы по маске +# *$py.class # Конкретный шаблон +# ``` +# +# 4. **Важные моменты**: +# - Сам файл `.gitignore` нужно добавить в репозиторий +# - Используйте `*` для шаблонов файлов +# - Используйте `#` для комментариев +# - Проверить игнорируемые файлы: `git ls-files --other --ignored --exclude-standard` +# +# 5. **Документация**: https://git-scm.com/docs/gitignore + +# ### Сохранение изменений в Git +# +# 1. **Основные команды**: +# - `git commit -am "сообщение"` - сохранить все измененные файлы +# - `git commit -m "сообщение" file1.py file2.py` - сохранить конкретные файлы +# - `git commit --amend -m "новое_сообщение"` - исправить последний коммит +# +# 2. **Правила хороших сообщений**: +# - Подробно описывать изменения +# - Избегать общих фраз ("обновил код", "фикс") +# - Помогать себе в будущем понять изменения +# - Пример: "Fixed the currency conversion bug" +# +# 3. **Важные моменты**: +# - Нельзя сохранять пустые папки +# - Git автоматически включает папки с файлами +# - После коммита файлы готовы к новым изменениям +# - Vim открывается если забыть `-m "сообщение"` (выход: Esc + qa!) +# +# 4. **Хорошая практика**: +# - Делать частые коммиты +# - Писать понятные сообщения +# - Группировать связанные изменения +# - Изучать примеры больших проектов (например, Django) + +# + +# ### Просмотр изменений перед коммитом (git diff) +# +# 1. **Основное использование**: +# ```bash +# git diff # показать все несохраненные изменения +# git diff file.py # изменения в конкретном файле +# ``` +# +# 2. **Как читать вывод git diff**: +# - `-` красным: удаленные строки +# - `+` зеленым: добавленные строки +# - `@@ -13,7 +13,14 @@`: координаты изменений +# - Показывает контекст вокруг изменений +# +# 3. **Процесс работы**: +# 1. Внести изменения в файл +# 2. `git diff` - проверить изменения +# 3. Исправить ошибки если найдены +# 4. `git add` - добавить в индекс +# 5. `git commit` - сохранить изменения +# +# 4. **Преимущества использования**: +# - Можно поймать опечатки +# - Проверить все изменения +# - Убедиться в правильности кода +# - Не сохранять лишнее +# +# 5. **Пример рабочего процесса**: +# ```bash +# git diff # проверить изменения +# git add README.md # добавить файл +# git commit -m "Added example code to README.md" # сохранить +# ``` + +# ### Просмотр изменений через git difftool +# +# 1. **Установка инструментов сравнения**: +# - **Windows**: WinMerge (https://winmerge.org) +# - **Linux**: +# ```bash +# sudo apt-get install meld +# # или +# sudo apt-get install kompare +# ``` +# - **macOS**: +# ```bash +# # Установка Homebrew +# /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" +# # Установка tkdiff +# brew install tkdiff +# ``` +# +# 2. **Настройка Git**: +# ```bash +# # Выбор инструмента +# git config diff.tool winmerge # или meld, tkdiff, kompare +# +# # Отключение запроса подтверждения +# git config --global difftool.prompt false +# ``` +# +# 3. **Использование**: +# ```bash +# git difftool file.txt # открыть изменения в графическом интерфейсе +# ``` +# +# 4. **Преимущества**: +# - Удобный визуальный интерфейс +# - Легче сравнивать изменения +# - Больше возможностей для анализа +# - Интеграция с Git-клиентами + +# + +# ### Частота сохранения изменений в Git +# +# 1. **Когда делать коммиты**: +# - После завершения функционала +# - После исправления бага +# - После написания класса +# - Когда код работоспособен +# +# 2. **Чего избегать**: +# - Коммитов с синтаксическими ошибками +# - Неработающего кода +# - Слишком редких коммитов +# - Слишком частых коммитов +# +# 3. **Правила хорошего тона**: +# - Запускать тесты перед коммитом +# - Проверять работоспособность +# - Писать понятные сообщения +# - Группировать связанные изменения +# +# 4. **Баланс в размере коммитов**: +# - Может быть несколько строк +# - Может быть несколько сотен строк +# - Главное - логическая завершенность +# - Возможность отката к рабочей версии +# +# 5. **Важно помнить**: +# - Лучше коммитить чаще, чем реже +# - Каждый коммит должен быть осмысленным +# - Упоминать о непроходящих тестах +# - Сохранять возможность отката + +# ### Удаление файлов в Git +# +# 1. **Правильное удаление файлов**: +# ```bash +# git rm file.txt # удалить файл +# git commit -m "Удалил file.txt" # сохранить удаление +# ``` +# +# 2. **Чего НЕ делать**: +# - Не использовать `del` (Windows) +# - Не использовать `rm` (macOS/Linux) +# - Не удалять файлы вручную +# - Не забывать про коммит после удаления +# +# 3. **Если удалили файл вручную**: +# ```bash +# git restore file.txt # восстановить файл +# # или +# git rm file.txt # подтвердить удаление +# ``` +# +# 4. **Важные моменты**: +# - Файл остается в истории Git +# - Можно восстановить позже +# - Нужно коммитить удаление +# - Работает только с "чистыми" файлами +# +# 5. **Процесс удаления**: +# 1. `git rm file.txt` +# 2. Git индексирует удаление +# 3. Нужен коммит для завершения +# 4. Файл удаляется из рабочей копии + +# ### Переименование и перемещение файлов в Git +# +# 1. **Правильное переименование**: +# ```bash +# git mv старый.txt новый.txt +# git commit -m "Переименовал файл" +# ``` +# +# 2. **Перемещение файлов**: +# ```bash +# mkdir новая_папка +# git mv файл.txt новая_папка/файл.txt +# git commit -m "Переместил файл" +# ``` +# +# 3. **Комбинированные операции**: +# ```bash +# git mv старый_путь/старый.txt новый_путь/новый.txt +# git commit -m "Переместил и переименовал" +# ``` +# +# 4. **Чего НЕ делать**: +# - Не переименовывать через проводник +# - Не перемещать файлы вручную +# - Не забывать про коммит +# - Не игнорировать git mv +# +# 5. **Важные моменты**: +# - История файла сохраняется +# - Git отслеживает перемещения +# - Нужен коммит после операций +# - Можно комбинировать действия + +# ### Просмотр журнала коммитов (git log) +# +# 1. **Основные команды**: +# ```bash +# git log # полный журнал +# git log --oneline # сокращенный формат +# git log -n 3 # последние 3 коммита +# git show хеш:файл.txt # содержимое файла в коммите +# ``` +# +# 2. **Структура коммита**: +# - Хеш (40 символов) +# - Автор +# - Дата +# - Сообщение коммита +# +# 3. **Удобные опции**: +# - `--oneline`: краткий формат +# - `-n число`: ограничение количества +# - `q`: выход из просмотра +# - `↑` и `↓`: навигация по журналу +# +# 4. **Хеши коммитов**: +# - 40 символов (полный хеш) +# - Первые 7 символов (короткий) +# - Уникальные идентификаторы +# - Используются для возврата к версиям +# +# 5. **Важно знать**: +# - Журнал может быть длинным +# - Хеши уникальны +# - Можно использовать GUI клиенты +# - История сохраняется полностью + +# ### Просмотр журнала коммитов (git log) +# +# 1. **Базовый просмотр**: +# ```bash +# git log # полный журнал со всеми деталями +# ``` +# Показывает: +# - Полный хеш коммита +# - Автора и email +# - Дату и время +# - Сообщение коммита +# +# 2. **Сокращенный просмотр**: +# ```bash +# git log --oneline # краткий формат +# git log --oneline -n 3 # только последние 3 коммита +# ``` +# +# 3. **Просмотр содержимого**: +# ```bash +# git show хеш:файл.txt # содержимое файла в конкретном коммите +# ``` +# +# 4. **Навигация в журнале**: +# - `↑` и `↓`: прокрутка +# - `q`: выход из просмотра +# - `Space`: следующая страница +# +# 5. **Хеши коммитов**: +# - Полный: 40 символов (962a8baa29e452c74d40075d92b00897b02668fb) +# - Короткий: 7 символов (962a8ba) +# - Используются для идентификации коммитов +# - Нужны для возврата к предыдущим версиям + +# ### Отмена несохраненных изменений +# +# 1. **Основные команды**: +# ```bash +# git restore file.txt # отменить изменения в одном файле +# git checkout . # отменить все изменения во всех файлах +# ``` +# +# 2. **Важные моменты**: +# - Работает только для несохраненных изменений +# - Нельзя отменить restore +# - Возвращает к последнему коммиту +# - Будьте осторожны - изменения пропадут! +# +# 3. **Процесс отмены**: +# 1. Проверить статус (`git status`) +# 2. Убедиться, что файлы не в индексе +# 3. Использовать `git restore` +# 4. Проверить результат +# +# 4. **Когда использовать**: +# - Случайные изменения +# - Неудачный эксперимент +# - Возврат к чистой версии +# - До индексации файлов +# +# 5. **⚠️ Предупреждения**: +# - Отмена необратима +# - Проверяйте статус перед отменой +# - Сохраняйте важные изменения +# - Используйте с осторожностью + +# ### Деиндексирование файлов (unstage) +# +# 1. **Основная команда**: +# ```bash +# git restore --staged file.txt # убрать файл из индекса +# ``` +# +# 2. **Что происходит**: +# - Файл остается измененным +# - Убирается из индекса +# - Не попадет в следующий коммит +# - Статус меняется на "modified" +# +# 3. **Когда использовать**: +# - После случайного `git add` +# - При изменении планов +# - Перед новым коммитом +# - Для перегруппировки изменений +# +# 4. **Процесс**: +# 1. Файл изменен +# 2. `git add` (в индексе) +# 3. `git restore --staged` (из индекса) +# 4. Файл все еще изменен +# +# 5. **Важно помнить**: +# - Изменения в файле сохраняются +# - Можно снова добавить в индекс +# - Не влияет на сам файл +# - Только убирает из очереди на коммит + +# ### Отмена последних коммитов (git revert) +# +# 1. **Основная команда**: +# ```bash +# git revert -n HEAD~3..HEAD # отменить последние 3 коммита +# git add . # добавить изменения +# git commit -m "Отмена изменений" # сохранить отмену +# ``` +# +# 2. **Как это работает**: +# - Создает новый коммит +# - Отменяет указанные изменения +# - Сохраняет историю +# - Можно отменить отмену +# +# 3. **Пример истории**: +# ```bash +# faec20e (HEAD) Starting over from the plot twist +# de24642 Changed the setting to outer space +# 2be4163 Added a whacky sidekick +# 97c655e Renamed the detective to 'Snuggles' +# 8aa5222 Added an exciting plot twist +# ``` +# +# 4. **Важные моменты**: +# - Коммиты не удаляются +# - История сохраняется +# - Можно вернуться к любой версии +# - Безопасная операция +# +# 5. **Процесс отмены**: +# 1. Выбрать количество коммитов +# 2. Выполнить `git revert` +# 3. Добавить изменения +# 4. Создать коммит отмены + +# ### Возврат к определенной версии файла +# +# 1. **Просмотр старой версии**: +# ```bash +# git show хеш:файл.py # посмотреть содержимое +# ``` +# +# 2. **Восстановление файла**: +# ```bash +# git checkout хеш -- файл.py # вернуть к версии +# git add файл.py # добавить в индекс +# git commit -m "Откат к версии хеш" # сохранить +# ``` +# +# 3. **Пример истории**: +# ```bash +# d41e595 Rolled back eggs.py to 009b7c0 +# 895d220 Adding email support to cheese() +# df617da Renaming bacon() to cheese() +# ef1e4bb Refactoring bacon() +# 009b7c0 Adding better documentation to spam() +# ``` +# +# 4. **Важные моменты**: +# - Откат только одного файла +# - Остальные файлы не меняются +# - Создается новый коммит +# - История сохраняется +# +# 5. **Процесс отката**: +# 1. Найти нужный коммит +# 2. Проверить содержимое (`git show`) +# 3. Восстановить файл (`git checkout`) +# 4. Создать коммит с откатом + +# + +# ### Работа с конфиденциальными данными в Git +# +# 1. **Предотвращение утечек**: +# ```bash +# # .gitignore +# secrets.txt +# confidential.py +# *.key +# *.password +# ``` +# +# 2. **Если данные уже попали в репозиторий**: +# - Использовать `git filter-branch` +# - Или BFG Repo-Cleaner (рекомендуется) +# - Ссылка: https://help.github.com/en/articles/removing-sensitive-data-from-a-repository +# +# 3. **Правильный подход**: +# - Хранить секреты отдельно +# - Добавлять файлы в `.gitignore` +# - Использовать переменные окружения +# - Читать данные из внешних файлов +# +# 4. **Что НЕ делать**: +# - Не коммитить пароли +# - Не хранить ключи API +# - Не включать токены +# - Не добавлять личные данные +# +# 5. **Безопасные практики**: +# - Создавать `secrets.txt.example` +# - Использовать конфиг-файлы +# - Документировать процесс +# - Регулярно проверять историю + +# ### GitHub и публикация репозитория +# +# 1. **Что такое GitHub**: +# - Веб-сервис для Git репозиториев +# - Бесплатный хостинг кода +# - Платформа для совместной работы +# - Резервное копирование +# +# 2. **Создание репозитория на GitHub**: +# ```bash +# 1. Зайти на github.com +# 2. Нажать New Repository +# 3. Указать имя (например, wizcoin) +# 4. Добавить описание +# 5. Выбрать Public/Private +# 6. Create repository +# ``` +# +# 3. **Структура ссылок**: +# ``` +# https://github.com/username/repository +# # Пример: +# https://github.com/asweigart/wizcoin +# ``` +# +# 4. **Важные моменты**: +# - Git ≠ GitHub +# - Git = система контроля версий +# - GitHub = веб-сервис для Git +# - Можно работать оффлайн +# +# 5. **Преимущества GitHub**: +# - Совместная работа +# - Резервное копирование +# - Доступ из любого места +# - Публичное портфолио + +# ### Работа с GitHub репозиторием +# +# 1. **Отправка локального репозитория**: +# ```bash +# # Привязка удаленного репозитория +# git remote add origin https://github.com/username/repo.git +# +# # Первая отправка +# git push -u origin master +# +# # Последующие отправки +# git push +# ``` +# +# 2. **Клонирование с GitHub**: +# ```bash +# git clone https://github.com/username/repo.git +# ``` +# +# 3. **Важные моменты**: +# - Отправлять изменения регулярно +# - Проверять статус синхронизации +# - Использовать HTTPS или SSH +# - Хранить учетные данные безопасно +# +# 4. **Процесс работы**: +# 1. Создать репозиторий на GitHub +# 2. Привязать локальный репо +# 3. Отправить изменения +# 4. Регулярно синхронизировать +# +# 5. **Аварийное восстановление**: +# - Сохранить рабочие файлы +# - Удалить проблемный локальный репо +# - Заново клонировать с GitHub +# - Вернуть изменения + +# Оновные моменты: +# Git - это система контроля версий, которая позволяет: +# Отслеживать изменения в коде +# Возвращаться к предыдущим версиям +# Работать над проектом в команде +# +# Основные состояния файлов в Git: +# Неотслеживаемые (untracked) +# Отслеживаемые (tracked): +# Сохраненные (committed) +# Измененные (modified) +# Индексированные (staged) +# + +# # Основные команды Git: +# git init # создать новый репозиторий +# git add # добавить файлы для отслеживания +# git commit # сохранить изменения +# git status # проверить статус файлов +# git log # просмотреть историю коммитов +# git push # отправить изменения на GitHub + +# Для организации Python проектов рекомендуется: +# Использовать cookiecutter для создания структуры проекта +# Создавать отдельный репозиторий для каждого проекта +# Регулярно коммитить изменения +# Использовать .gitignore для исключения ненужных файлов +# GitHub позволяет: +# Хранить копию репозитория онлайн +# Делиться кодом с другими разработчиками +# Создавать резервные копии diff --git a/docs/welcome/intro_eng.md b/docs/welcome/intro_eng.md deleted file mode 100644 index 44668739..00000000 --- a/docs/welcome/intro_eng.md +++ /dev/null @@ -1,89 +0,0 @@ -### Register Accounts - -1. **GitHub** - - Go to [GitHub](https://github.com/). - - Click on "Sign up" and follow the instructions to create an account. - - Once registered, share your GitHub profile link in the chat: [Telegram Chat](https://t.me/c/1937296927/3602). - -2. **Kaggle** - - Visit [Kaggle](https://www.kaggle.com/). - - Click on "Sign up" and create an account. - - Confirm your phone number on Kaggle (RELEVANT FOR RUSSIA) [Video Guide](https://youtu.be/fcBOlOl__T0) - - Use this number for Kaggle: [365sms.ru](https://365sms.ru/) - - - Obtain Contributor Status on Kaggle: [Video Guide](https://youtube.com/shorts/A_EtBko0T3U?feature=shared) - - Share your Kaggle profile link in the chat: [Telegram Chat](https://t.me/c/1937296927/832). - -3. **ODS.AI** - - Go to [ODS.AI](https://ods.ai/). - - Register for an account. - - Share your ODS.AI profile link in the chat: [Telegram Chat](https://t.me/c/1937296927/832). - -### Download and Install Software - -1. **GitHub Desktop** - - Download from [GitHub Desktop](https://github.com/desktop/desktop). - - Follow the installation instructions for your operating system. - -2. **Cursor** - - Download from [Cursor](https://github.com/getcursor/cursor). - - Install it according to the provided instructions. - -3. **Python (CPython)** - - Download from [CPython](https://github.com/python/cpython). - - Follow the installation guide for your platform. - -4. **Git for Windows** - - Download from [Git for Windows](https://github.com/git-for-windows/git). - - Install it using the setup instructions. - -5. **Conda** - - Download from [Conda](https://github.com/conda/conda). - - Follow the installation instructions for your system. - -### Additional Resources - -- **Jamboard for Learning** - - Watch the video guide: [YouTube](https://youtu.be/8pwKgbMyfbo) - - Use [Canva](https://www.canva.com/) to create and share Jamboards. - - Send me the link to your Jamboard in a private message. - -### Download the Repository to Your Computer - -### Detailed Instructions - -1. **Star the Repository** - - Make sure you have starred the repository. https://github.com/SENATOROVAI/Data-Science-For-Beginners-from-scratch-SENATOROV -  - -2. **Join the Team** - - If you are not listed in the [Senatorov Team](https://github.com/orgs/SENATOROVAI/teams/senatorov-team), send a message in the chat [here](https://t.me/c/1937296927/3602) with: - - Your Telegram username - - Your GitHub profile link - -3. **Create a New Branch** - - Go to the [branches page](https://github.com/SENATOROVAI/GithubLogin-Data-Science-For-Beginners-from-scratch-SENATOROV/branches) and create a new branch named after your [GitHub username](https://github.com/settings/admin). - - Example  - -4. **Clone the Repository** - - Download the repository to your local machine using any convenient method. I recommend GitHub Desktop. -Старые студенты сразу переходят к этому пункту, при условии что предыдущие выполнены
- -- Выполни инструкцию ниже, если возникнут трудности смело пиши: https://t.me/c/1937296927/2415 - ---- - -