Перейти к содержанию

Git komand

Материал из RAMBA Wiki
Версия от 16:12, 30 сентября 2026; Artem (обсуждение | вклад) (Новая страница: «'''Git''' — система контроля версий. Она позволяет сохранять историю изменений, работать с ветками и обмениваться кодом через удалённый репозиторий, например GitLab или GitHub. На этой странице собраны команды из памятки ''Git_useful_commands.pdf'' с уточнёнными описаниям...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

Git — система контроля версий. Она позволяет сохранять историю изменений, работать с ветками и обмениваться кодом через удалённый репозиторий, например GitLab или GitHub.

На этой странице собраны команды из памятки Git_useful_commands.pdf с уточнёнными описаниями и практическими примерами.

Как устроена работа с Git

Понятие Что означает
Рабочая папка Файлы проекта, которые вы редактируете.
Индекс (staging area) Подготовленные изменения для следующего коммита. В индекс попадает состояние файла на момент выполнения git add.
Коммит Сохранённая версия подготовленных изменений в локальной истории Git.
Ветка Отдельная линия разработки, например main или feature/new-command.
Удалённый репозиторий Репозиторий на другом компьютере или сервере. Обычно его короткое имя — origin.

Обычная последовательность: изменить файлы → проверить изменения → git add → git commit → git push.

Важно: коммит сохраняет изменения локально. Чтобы отправить коммиты на сервер, нужна отдельная команда git push.

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

git --version — версия Git

Показывает установленную версию Git.

git --version

git init — создать локальный репозиторий

Инициализирует репозиторий в текущей папке. Создаёт служебный каталог .git, в котором Git хранит историю и настройки. Файлы проекта автоматически в коммит не попадают.

cd my-project
git init

Дополнительно: git clone — скачать существующий проект

Создаёт локальную копию удалённого репозитория и обычно настраивает для него имя origin. Замените адрес на URL своего проекта.

git clone https://gitlab.example.com/team/my-project.git
cd my-project

После git clone выполнять git init не требуется.

Проверка изменений

git status — состояние проекта

Показывает текущую ветку, подготовленные изменения, изменения вне индекса и новые неотслеживаемые файлы. Игнорируемые файлы по умолчанию не выводятся.

git status

Краткий вариант:

git status -sb

git diff — посмотреть изменения

Показывает разницу между рабочей папкой и индексом: изменения в отслеживаемых файлах, которые ещё не подготовлены к коммиту.

git diff

Посмотреть изменения, уже подготовленные к следующему коммиту:

git diff --staged

Посмотреть изменения конкретного файла вне индекса:

git diff -- README.md

Обратите внимание: обычный git diff не показывает содержимое новых неотслеживаемых файлов. Если изменения уже добавлены через git add, смотрите их через git diff --staged.

Подготовка и сохранение изменений

git add — подготовить изменения

Добавляет в индекс новые файлы, изменения и удаления в указанной области.

Все изменения в текущей папке и её подпапках, кроме игнорируемых неотслеживаемых файлов:

git add .

Только выбранный файл:

git add README.md

Несколько файлов:

git add README.md bot/main.py

Если после git add снова отредактировать файл, новые правки нужно добавить повторно. Перед массовым добавлением проверьте git status, чтобы в коммит не попали пароли, токены или ненужные файлы.

git commit -m — сохранить коммит

Создаёт локальный коммит из изменений в индексе. Параметр -m задаёт сообщение с описанием изменений.

git commit -m "Добавлена команда просмотра статистики"

Пишите, что именно изменилось. Например: Исправлено переподключение к Telegram вместо update.

Работа с удалённым репозиторием

git remote — список подключений

Показывает короткие имена настроенных удалённых репозиториев, например origin и upstream.

git remote

git remote -v — адреса репозиториев

Показывает имена и URL для получения изменений (fetch) и отправки (push).

git remote -v

Для нового проекта, созданного через git init, подключение можно добавить отдельно. Репозиторий на сервере должен уже существовать:

git remote add origin https://gitlab.example.com/team/my-project.git

git push — отправить коммиты на сервер

Отправляет локальные коммиты и обновляет соответствующие ветки на сервере согласно параметрам команды и настройкам Git. Незакоммиченные правки не отправляются.

Если для текущей ветки уже настроена связь с удалённой веткой:

git push

При первой отправке новой ветки:

git push -u origin feature/new-command

Здесь -u настраивает отслеживаемую удалённую ветку для последующих команд. Замените feature/new-command на имя своей ветки.

git pull — получить и включить изменения

Получает изменения с сервера и включает их в текущую ветку. Способ включения зависит от параметров и настроек: слияние, rebase или только fast-forward.

git pull

Для обычного обновления без автоматического создания коммита слияния:

git pull --ff-only

Если локальная и удалённая истории разошлись, --ff-only остановит обновление. Перед обновлением проверьте git status и сохраните текущую работу коммитом или через git stash.

Просмотр истории

git log — история коммитов

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

git log

Последние десять коммитов в кратком виде:

git log --oneline -10

Граф истории по всем локально известным веткам:

git log --oneline --graph --decorate --all

Если вывод открылся в просмотрщике, для выхода обычно используется клавиша q.

Работа с ветками

git branch — локальные ветки

Показывает локальные ветки. Текущая ветка отмечена символом *.

git branch

git branch -a — локальные и удалённые ветки

Показывает локальные ветки и локально сохранённые ссылки на удалённые ветки. Команда сама не обращается к серверу.

git branch -a

Обновить сведения с origin и убрать устаревшие ссылки на удалённые ветки:

git fetch origin --prune
git branch -a

git branch NAME — создать ветку

Создаёт новую ветку от текущего коммита, но не переключается на неё.

git branch feature/new-command

git checkout NAME — переключиться на ветку

Переключает текущую ветку и обновляет файлы рабочей папки.

git checkout feature/new-command

Альтернатива для переключения веток:

git switch feature/new-command

Создать ветку и сразу переключиться на неё одной командой:

git switch -c feature/new-command

Используйте либо создание через git branch с последующим переключением, либо git switch -c. Повторно создавать уже существующую ветку не нужно.

git branch -D NAME — принудительно удалить ветку

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

Для обычного удаления сначала используйте вариант с проверкой:

git branch -d feature/old-task

Принудительный вариант из исходной памятки:

git branch -D feature/old-task

Важно: -D может удалить последнюю ветку, ссылающуюся на нужные коммиты. Используйте его только если содержимое ветки больше не требуется или сохранено в другом месте. Нельзя удалить ветку, которая сейчас используется в рабочем дереве; сначала переключитесь на другую. На сервере ветка этой командой не удаляется.

Временное сохранение работы

git stash — отложить незакоммиченные изменения

Временно сохраняет изменения отслеживаемых файлов, включая индекс, и возвращает эти файлы к состоянию текущего коммита.

git stash

Сохранить также новые неотслеживаемые файлы и добавить описание:

git stash push -u -m "Незавершённая работа над статистикой"

Посмотреть список сохранений:

git stash list

Вернуть последнее сохранение:

git stash pop

После успешного применения pop удаляет запись из stash. Если возник конфликт, запись сохраняется. Вариант git stash apply применяет изменения, оставляя запись в списке.

Примечание: обычный git stash не включает новые неотслеживаемые файлы; для них нужен -u. Игнорируемые файлы с -u также не сохраняются. Stash хранится локально и не отправляется обычным git push.

Пример повседневной работы

Пример для существующего репозитория и ветки с настроенным отслеживанием. Выполняйте команды последовательно, проверяя результат каждого шага. При ошибке или конфликте сначала разберитесь с ним.

1. Перейти в проект и проверить состояние:

cd my-project
git status

2. При чистой рабочей папке получить обновления:

git pull --ff-only

3. Изменить файлы, затем проверить правки:

git status
git diff

4. Подготовить нужные файлы и проверить будущий коммит:

git add README.md
git diff --staged

Замените README.md на нужные файлы. Если нужны все изменения, можно выполнить git add . из корня проекта.

5. Сохранить и отправить:

git commit -m "Обновлена документация проекта"
git push
git status

Частые вопросы

Почему после git add команда git diff ничего не показывает?
Изменения уже находятся в индексе. Выполните git diff --staged.
Почему изменения не появились в GitLab или GitHub после коммита?
git commit сохраняет изменения локально. Для отправки нужен успешный git push в нужный удалённый репозиторий и ветку.
Почему новая ветка не стала текущей после git branch?
Эта команда только создаёт ветку. Переключитесь через git switch или git checkout.
Почему push сообщает, что нет upstream-ветки?
Для новой ветки настройте отслеживание командой git push -u origin ИМЯ_ВЕТКИ, заменив имя на фактическое.
Почему push отклонён с сообщением non-fast-forward?
На сервере есть история, которой нет в вашей отправляемой ветке. Получите изменения через git fetch, изучите расхождение и согласуйте истории перед повторной отправкой.

Источник

Подготовлено на основе памятки Git_useful_commands.pdf. Описания переведены и уточнены; дополнительные варианты команд, примеры и ответы на частые вопросы добавлены для практического использования.