Legit


Git команды

Git команды

==git init== Создает новый пустой Git-репозиторий или реинициализирует существующий. Создает скрытую директорию .git, где хранится вся история и метаданные.

 

git init # Инициализация репозитория в текущей директории git init project_name # Создает папку project_name и инициализирует там репозиторий

==git branch== Управление ветками (создание, удаление, просмотр). Без аргументов показывает список веток.

 

git branch # Показать список локальных веток (текущая отмечена *) git branch new_feature # Создать новую ветку ‘new_feature’ (без переключения на неё) git branch -d old_branch # Удалить ветку (безопасно, если изменения слиты) git branch -D test_branch # Принудительно удалить ветку (даже если есть несохраненные изменения) git branch -a # Показать все ветки (локальные и удаленные)


==**git config**==
Настройка параметров Git (имя пользователя, email, алиасы, поведение).
```bash
# Установка имени и почты (глобально для текущего пользователя)

git config —global user.name “My Name” git config —global user.email “email@example.com

Настройка редактора (например, nvim)

git config —global core.editor “nvim”

Просмотр всех настроек

git config —list


==**git log**==
Показывает историю коммитов текущей ветки.
```bash

git log # Полная история (hash, автор, дата, сообщение) git log —oneline # Сокращенный вид (hash и сообщение) git log -p # Показать историю вместе с изменениями в файлах (diff) git log —graph —all # Показать дерево коммитов всех веток в виде графа


==**git commit**==
Фиксирует проиндексированные изменения (из `git add`) в локальном репозитории.

```bash

git commit -m “Описание изменений” # Создать коммит с сообщением git commit -am “Описание изменений” # Автоматически добавить отслеживаемые файлы и закоммитить (пропускает git add) git commit —amend # Изменить последний коммит (сообщение или добавить забытые файлы)


==**git checkout**==

Переключение между ветками или восстановление файлов рабочего дерева. Примечание: В новых версиях Git частично заменен командами git switch (для веток) и git restore (для файлов), но checkout используется повсеместно.

 

git checkout develop # Переключиться на ветку ‘develop’ git checkout -b new_feature # Создать ветку ‘new_feature’ и сразу переключиться на неё git checkout — file.txt # Отменить изменения в файле file.txt (вернуть к состоянию последнего коммита) git checkout <commit_hash> # Переключиться в состояние конкретного коммита (Detached HEAD)


==**git rm**==

Удаляет файлы из индексной области (staging area) и из рабочей директории.

 

git rm file.txt # Удалить файл с диска и зафиксировать удаление для следующего коммита git rm -r folder_name # Рекурсивное удаление папки git rm —cached file.txt # Удалить файл только из отслеживания Git, но оставить его на диске (полезно для .gitignore)

==git remote== Управляет набором отслеживаемых удаленных репозиториев (remote). Позволяет сохранять короткие имена (алиасы, например, origin) для длинных URL-адресов серверов.

 

git remote -v # Показать список удаленных репозиториев с их URL (для fetch и push) git remote add origin # Добавить удаленный репозиторий с именем ‘origin’ по ссылке git remote remove origin # Удалить связь с удаленным репозиторием ‘origin’ git remote set-url origin <new_url> # Изменить URL для ‘origin’ (например, при смене протокола с HTTPS на SSH) git remote rename origin upstream # Переименовать алиас ‘origin’ в ‘upstream’ git remote show origin # Показать подробную информацию о ветках и настройках конкретного репозитория

==git push== Отправляет зафиксированные изменения (коммиты) из локального репозитория в удаленный. Обновляет указатели веток в удаленном репозитории. Раньше принимал логин + пароль, сейчас принимает логин + ключ.

 

git push # Отправить изменения текущей ветки в привязанную удаленную ветку (upstream) git push origin main # Отправить ветку ‘main’ в репозиторий ‘origin’ git push -u origin new_branch # Отправить ветку и запомнить связь (set-upstream), чтобы в будущем писать просто git push git push —force # Принудительная отправка (переписывает историю удаленного репозитория, опасно) git push —force-with-lease # Более безопасный вариант force push (не перезапишет, если кто-то другой обновил ветку) git push origin —delete branch # Удалить ветку ‘branch’ в удаленном репозитории git push —tags # Отправить все теги в удаленный репозиторий

==**git add**==
Добавляет изменения (новые, измененные файлы) в индекс (staging area) для подготовки к следующему коммиту. Это способ сказать Git'у: «Я хочу включить эти изменения в следующую фиксацию».
```bash

git add file.txt # Добавить конкретный файл в индекс git add . # Добавить все изменения из текущей директории (и подпапок) git add -A # Добавить вообще все изменения в репозитории (включая удаление файлов) git add *.py # Добавить все файлы с расширением .py git add -p # Интерактивный режим (patch): позволяет добавлять не весь файл, а отдельные куски кода


Структура Git репозитория

Структура Git репозитория

\begin{gathered} Work directory - \text{ Рабочая папка на компьютере.}\ \text{Просто папка в файловой системе, в которой иницилизирован Git репозиторий.}\ \Downarrow\ index - \text{ Как видит эту папку Git.}\ \text{Для commit’а Git берёт то, что последнее занесли в индекс, а не то,}\ \text{что сейчас в рабочей папке.}\ \Downarrow\ Repo - \text{ Сам Git репозиторий.} \end{gathered}