Git Commands Cheat Sheet: The Commands You Actually Use, With Examples

  1. Главная
  2. Блог
  3. Разработка программного обеспечения

Разработка программного обеспечения

Git Commands Cheat Sheet: The Commands You Actually Use, With Examples

A practical Git reference grouped by what you are trying to do, from your first commit to undoing a mistake. Keep it open while you work, and use the undo guide before you reach for anything risky.

8 мин чтения
Шпаргалка по командам Git: команды, которые вы на самом деле используете, с примерами

Главное

  • A change moves through three areas: working directory, staging area and repository.
  • git status is the safest command you have, so run it constantly.
  • Use git revert to undo shared commits, and keep git reset --hard for local work you are sure about.
  • git reflog can usually rescue commits you thought were lost.

Nobody remembers every Git command, and you do not need to. This Git commands cheat sheet focuses on the small set that covers nearly all daily work, grouped by the job you are trying to do.

Мы протестировали локальные команды в одноразовом демонстрационном репозитории с помощью Git для Windows, и показанный результат получен в результате этого запуска с удаленными предупреждениями о конце строки. Your commit hashes will differ. The remote commands need a server, so we did not run those. Впервые в системе контроля версий? Start with our Git tutorial for beginners.

How Git thinks: three areas

Most confusion disappears once you know where a change lives:

Площадь What it holds Переехал туда
Рабочий каталог Your files as you edit them Редактирование
Зона подготовки (индекс) Changes selected for the next commit git добавить
Локальный репозиторий Your saved commit history git совершить коммит
Удаленный репозиторий Общая копия, например, на GitHub. git push

Настройка и запуск проекта

Команда Что он делает
git config --global user.name "Asha" Устанавливает ваше имя в коммитах
git config --global user.email "a@b.com" Sets your email on commits
git config --global init.defaultBranch main Называет новые ветки по умолчанию main
git инициализация Создает репозиторий в текущей папке
git клон <url> Загружает существующий репозиторий
git конфиг --список Показывает ваши текущие настройки

Сохраните свою работу

Команда Что он делает
git-статус Показывает, что изменилось
git добавить файл.txt Стадия один файл
git добавить. Стадия всех изменений в этой папке
git добавить -p Стадия выбранных частей файла
git diff Показывает неустановленные изменения
git diff --staged Показывает, что будет совершено
git commit -m "Сообщение" Сохраняет промежуточные изменения как фиксацию.
git commit -am "Сообщение" Стадии отслеживают файлы и фиксируют их

Here is how the short status view changes as a new file moves along:

$ echo "hello" > app.txt
$ git status --short
?? app.txt

$ git add app.txt
$ git status --short
A  app.txt

$ git commit -m "Add app file"

?? means untracked, and A means added to staging. В формате с двумя столбцами левый столбец — это промежуточная область, а правый — ваш рабочий каталог. Обратите внимание, что git commit -am пропускает новые файлы, поэтому их необходимо сначала добавить явно.

Филиалы

Команда Что он делает
git ветка Перечисляет местные филиалы
ветка git -a Включает удаленные филиалы
git переключатель функция/вход Переезжает в филиал
git переключатель -c функция/вход Создает ветку и перемещается в нее
функция слияния git/вход Объединяет эту ветку с текущей
git перебазировать основную Воспроизводит ваши коммиты поверх main
git ветка -d функция/вход Удаляет объединенную ветку
git ветка -D функция/вход Принудительно удаляет несвязанную ветку

Вот небольшая ветка функций от начала до конца:

$ git switch -c feature/login
$ echo "login" >> app.txt
$ git commit -am "Add login"
$ git switch main
$ git merge --no-edit feature/login
$ git log --oneline --graph
* d0450b6 Add login
* 676b684 Add app file

$ git branch -d feature/login
Deleted branch feature/login (was d0450b6).

История представляет собой прямую линию, потому что main не переместился, поэтому Git выполнил быстрое слияние. Вы по-прежнему увидите git checkout в старых руководствах. Это работает, но новые команды switch и restore разделяют множество задач на более понятные. Чтобы выбрать между слиянием и перебазированием, прочтите Git merge vs rebase.

Работа с пультами

Команда Что он делает
git удаленный -v Перечисляет пульты дистанционного управления и их URL-адреса.
git удаленно добавить источник <url> Подключает пульт
мерзавец принести Загружает изменения без слияния
мерзавец тянуть Извлекает, а затем интегрирует в вашу ветку
git push Загружает ваши коммиты
git push -u функция происхождения/вход Отправляет новую ветку и отслеживает ее
git push origin --удалить функцию/логин Удаляет удаленную ветку
git push --force-with-lease Сила толкает, но только если никто другой не толкал

fetch всегда безопасен, поскольку он никогда не изменяет ваши файлы. Если вам нужно перезаписать ветку после перебазирования, предпочтите --force-with-lease вместо простого --force, поскольку он отказывается стирать новые коммиты коллеги.

Тайник: отложить работу

Stash полезен, когда вам нужно переключить задачи, но вы не готовы их выполнить:

$ echo "wip" >> app.txt
$ git stash
$ git status --short
                       # clean, the change is put away
$ git stash pop
$ git status --short
 M app.txt
Команда Что он делает
git тайник Сохраняет изменения и очищает ваш рабочий каталог.
git stash -u Включает неотслеживаемые файлы
список тайников git Показывает сохраненные тайники
git stash pop Восстанавливает последний тайник и удаляет его
применить git stash Восстанавливает его, но сохраняет сохраненным.

Посмотреть историю

Команда Что он делает
журнал git --oneline Показывает одну строку на каждый коммит
git log --oneline --graph --all Рисует все ветки
git log -p файл.txt Показывает изменения файла с течением времени
git show <хэш> Подробно показывает один коммит
git обвинять файл.txt Показывает, кто последним менял каждую строку
git рефлог Показывает везде, где был HEAD.
мерзавец пополам Бинарный поиск коммита, в котором добавлена ошибка

Исправьте ошибки: «Я хочу…»

Это та часть, на которую смотрит большинство людей. Найдите свою ситуацию:

Ситуация Команда
Отменить непроиндексированные изменения в файле git восстановить файл.txt
Удалить файл, но сохранить изменения git Restoration --staged file.txt
Исправить сообщение или файлы последнего коммита git коммит --изменить
Отменить последний коммит, сохранив изменения git сброс --soft HEAD~1
Отменить последний коммит, сохранив изменения непроиндексированными git сброс HEAD~1
Безопасно отменить отправленную фиксацию git revert <хэш>
Отбросить все локальные изменения git сброс --hard
Удалить неотслеживаемые файлы git clean -fd (предварительный просмотр с помощью -n)
Восстановить «потерянный» коммит git reflog, затем git branch rescue <hash>

Совет: Прежде чем рисковать, запустите git branch backup. Это ничего не стоит и дает вам метку, к которой можно вернуться. git reset --hard и git clean могут навсегда уничтожить незафиксированную работу, которую даже reflog не удастся восстановить.

Сброс, возврат и восстановление

Эти три имени вызывают много путаницы, но они делают совершенно разные вещи:

Команда Действует на Меняет историю? Безопасно в общих ветках?
git восстановление Файлы Нет Да, но он отменяет локальные изменения
git вернуться Коммит, добавив его противоположность Добавляет к этому Да
git сброс Указатель ветки Переписывает это Нет

В нашей демо-версии мы допустили плохую строку и отменили ее. Файл вернулся к своему предыдущему содержимому, а ошибка осталась видимой в журнале как история:

$ echo "oops" >> app.txt
$ git commit -am "Bad change"
$ git revert --no-edit HEAD
$ cat app.txt
hello
login

Затем git reset --soft HEAD~1 удалил этот последний коммит, но сохранил его изменения, которые в git status --short были показаны как M app.txt.

Теги

Команда Что он делает
git-тег Перечисляет теги
git-тег v1.0 Создает облегченный тег
git tag -a v1.0 -m "Выпуск" Создает аннотированный тег, лучше всего подходит для выпусков.
git push origin v1.0 Отправляет тег (теги не отправляются по умолчанию)

Теги часто запускают конвейеры выпуска, как объясняется в нашем руководстве по GitHub Actions CI/CD.

Простой ежедневный рабочий процесс

git switch main
git pull
git switch -c feature/search
# edit files
git status
git add -p
git commit -m "Add search by product name"
git push -u origin feature/search
# open a pull request, get a review, then merge

Напишите сообщения о фиксации, объясняющие изменение императива, например «Исправить перенаправление при входе». Вы скажете себе спасибо, прочитав журнал через шесть месяцев.

Распространенные ошибки

  • Секреты фиксации. Удаление файла в более позднем коммите не удаляет его из истории. Немедленно поверните секрет и используйте .gitignore.
  • Перезапись общей истории. Не сбрасывайте и не перемещайте коммиты, которые уже были выполнены другими.
  • Использование git add . вслепую. Сначала проверьте git status, чтобы файлы сборки и журналы оставались вне поля зрения.
  • Использование обычного --force. Предпочитаю --force-with-lease.
  • Выполнение крупных коммитов. Маленькие коммиты легче просмотреть, отменить и разделить пополам.

Итоги

Изучите три области и дюжину команд, и Git перестанет быть страшным. Держите под рукой таблицу отмены и помните, что git status и git reflog — это ваша страховка. Чтобы укрепить доверие, создайте одноразовый репозиторий, намеренно ломайте и восстанавливайте его, поскольку это самое дешевое место для ошибок.

Часто задаваемые вопросы

Какие команды Git используются чаще всего?

Ежедневный набор — это git status, добавление, фиксация, push, pull, переключение, ветвление, слияние и журналирование. Эти несколько команд охватывают большую часть обычного рабочего дня.

Как мне отменить последний коммит в Git?

Если он локальный, используйте git reset –soft HEAD~1, чтобы сохранить изменения. Если вы уже отправили его, используйте git revert, чтобы история оставалась нетронутой для других.

В чем разница между git fetch и git pull?

git fetch загружает только новые данные и оставляет ваши файлы в покое. git pull извлекает, а затем объединяет или переносит эти изменения в вашу текущую ветку.

В чем разница между git reset и git revert?

git reset перемещает указатель ветки и может перезаписать историю. git revert добавляет новый коммит, который отменяет предыдущий, что делает его безопасным в общих ветках.

Могу ли я восстановить удаленную ветку в Git?

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

Продолжайте учиться

Работайте с Stack Quora

Нужна помощь с тестированием, WordPress или SEO?

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

Продолжайте читать

Больше руководств по тестирование, искусственный интеллект и современные разработки

Понравилась эта статья? Выберите тему и сразу приступайте к нашим новейшим руководствам.

Искусственный интеллект

Объяснение галлюцинаций искусственного интеллекта: почему языковые модели все выдумывают и как их уменьшить

Галлюцинации ИИ объяснили: что это такое, почему языковые модели их создают, распространенные типы, как уменьшить их с помощью заземления и подсказо…

Читать статью →
DevOps

Объяснение переменных среды: файлы .env, секреты и правильно выполненная конфигурация

Переменные среды объясняются на примерах Python, которые мы запускали: их чтение и установка, почему каждое значение является строкой, файлы .env, н…

Читать статью →
Разработка ПО

Объяснение ограничения скорости API: алгоритмы, заголовки и обработка ошибок 429

Ограничение скорости API объясняется с помощью проведенного нами моделирования: сегмент токенов, фиксированное окно, скользящее окно, 429 ответов, з…

Читать статью →
Автоматизация тестирования

Издевательство в Python: unittest.mock, патч и ошибки, из-за которых тесты лгут

Издевательство на Python с помощью unittest.mock, протестировано: Mock и return_value, Side_effect, исправление использования имени, спецификация и …

Читать статью →
Тестирование ПО

Объяснение покрытия кода: покрытие линий или ветвей и что на самом деле означает 100%

Покрытие кода объяснено с помощью реального запуска покрытия.py: покрытие строк, ветвей и условий, чтение отчета, почему 100%-ное покрытие все еще м…

Читать статью →
Базы данных и SQL

DELETE, TRUNCATE и DROP в SQL: различия, откат и когда использовать каждый из них

Объяснение DELETE, TRUNCATE и DROP на примере протестированного SQL: что каждый из них удаляет, откат, триггеры, сброс идентификаторов, скорость и ч…

Читать статью →
Базы данных и SQL

Объяснение представлений SQL: создавайте, используйте и избегайте ловушек, с примерами

Представления SQL, объясненные с помощью запросов, которые мы выполняли: создание представления, результаты в реальном времени, скрытие столбцов, пр…

Читать статью →
Разработка ПО

Интерфейс TypeScript и тип: реальные различия, протестированные с помощью компилятора

Интерфейс TypeScript против типа, проверенный реальным компилятором: что могут делать оба, что может делать только один, слияние объявлений, расшире…

Читать статью →
Разработка ПО

Объяснение Python *args и **kwargs: гибкие функции с понятными примерами

Python *args и **kwargs, объясненные с помощью кода, который мы запускали: упаковка и распаковка, порядок параметров, аргументы только по ключевым с…

Читать статью →
Разработка ПО

Лямбда-функции Python: синтаксис, реальное использование и когда их не следует использовать

Лямбда-функции Python, объясненные с помощью кода, который мы запускали: синтаксис, сортировка с помощью ключа, карты и фильтра, замыкания, ловушка …

Читать статью →
Искусственный интеллект

Что такое ИИ-агенты? Как они работают: можно запустить простой цикл агента

Что такое агенты ИИ? Простое руководство по циклу агента, инструментам, памяти и ограничениям, с небольшим циклом Python, который мы запустили, реал…

Читать статью →
DevOps

Мониторинг и наблюдаемость: реальная разница с журналами, метриками и трассировками

Объяснение мониторинга и наблюдаемости: известные и неизвестные сбои, журналы, метрики и трассировки, пошаговое руководство по инцидентам при оформл…

Читать статью →
DevOps

Docker Volumes против Bind Mounts: правильное сохранение данных контейнера

Объяснение томов Docker и монтирования привязки: почему исчезают данные контейнера, именованные тома, монтирование привязки, tmpfs, примеры создания…

Читать статью →
Автоматизация тестирования

TDD против BDD: ключевые различия, одна функция, созданная для обоих способов, и когда использовать каждый

TDD и BDD объясняются с помощью одной функции скидки, созданной в обоих направлениях: красно-зеленый рефакторинг с кодом, который мы запускали, сцен…

Читать статью →
Тестирование ПО

Пользовательское приемочное тестирование (UAT): процесс, контрольный список и реальные примеры

Приемочное тестирование пользователей объяснило: кто его проводит, чем оно отличается от контроля качества, семиэтапный процесс, шаблон тестового сц…

Читать статью →
Базы данных и SQL

Объяснение значений NULL в SQL: IS NULL, COALESCE, NULLIF и ловушки, которых следует избегать

Значения SQL NULL объяснены с помощью запросов, которые мы выполнили: трехзначная логика, IS NULL, COALESCE, NULLIF, как агрегаты, соединения и сорт…

Читать статью →
Базы данных и SQL

Оператор SQL CASE WHEN: синтаксис, реальные примеры и распространенные ошибки

SQL CASE WHEN объяснен с помощью запросов, которые мы выполняли: простые формы и формы для поиска, порядок условий, повороты с помощью SUM, трюки CO…

Читать статью →
Разработка ПО

Что такое JWT? Веб-токены JSON, объясненные на рабочем примере

Что такое JWT? Объяснение JSON Web Tokens: три части: токен, созданный и измененный в коде, который мы запускали, JWT и сеансы, хранилище, токены об…

Читать статью →
Разработка ПО

Объяснение цикла событий JavaScript: стек вызовов, микрозадачи и таймеры с примерами

Цикл событий JavaScript объясняется с помощью кода, который мы запускали: стек вызовов, очереди задач и микрозадач, почему setTimeout 0 не является …

Читать статью →
Разработка ПО

Генераторы Python и объяснение доходности: экономьте память с помощью реальных примеров

Генераторы Python и доходность, объясненные с помощью кода, который мы запускали: как они приостанавливаются и возобновляются, измеряют экономию пам…

Читать статью →
Искусственный интеллект

Что такое вложения? Простое объяснение векторов и косинусного сходства

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

Читать статью →
DevOps

Сине-зеленое и канареечное развертывание: различия, компромиссы и как выбрать

Объяснение сине-зеленого и канареечного развертывания: как каждый из них работает, стоимость, риски и откат, стабильное группирование пользователей,…

Читать статью →
Автоматизация тестирования

Ненадежные тесты: что их вызывает и как их исправить навсегда

Ненадежные тесты объясняются на демонстрациях, которые мы запускали: основные причины, способы подтверждения и диагностики, правильные исправления в…

Читать статью →
Тестирование ПО

Нагрузочное тестирование и стресс-тестирование: различия, метрики и примеры k6

Объяснение нагрузочного и стресс-тестирования: что доказывает каждое из них, тесты на всплески и выдержки, важные метрики, почему средние значения в…

Читать статью →
Тестирование ПО

Тестовый пример и тестовый сценарий: ключевые различия, примеры и когда использовать каждый

Объяснение тестового случая и тестового сценария: четкие определения, параллельная таблица, одна функция сброса пароля, взятая из сценариев в случаи…

Читать статью →
Базы данных и SQL

Оптимизация SQL-запросов: чтение планов выполнения и исправление медленных запросов с указанием времени

Оптимизация SQL-запросов проверена на миллионе строк: читайте планы выполнения, добавляйте правильные индексы, исправляйте неразмещаемые фильтры, ис…

Читать статью →
Базы данных и SQL

SQL UNION против UNION ALL: различия, примеры и проверка производительности

SQL UNION и UNION ALL объяснены с помощью запросов, которые мы выполнили: дубликаты, правила, которым следуют оба, реальная ошибка данных, измеренна…

Читать статью →
Разработка ПО

Учебное пособие по API JavaScript Fetch: GET, POST, обработка ошибок и тайм-ауты

Учебное пособие по API JavaScript Fetch, протестированное на локальном сервере: GET и POST, почему не выдается ошибка 404, многоразовый помощник, ст…

Читать статью →
Разработка ПО

Обработка файлов Python: чтение, запись, CSV, JSON и pathlib с примерами

Обработка файлов Python объясняется с помощью кода, который мы запускали: открытые режимы, чтение больших файлов, CSV, JSON, pathlib, двоичные файлы…

Читать статью →
Разработка ПО

Классы и объекты Python: учебник ООП с реальными примерами

Классы и объекты Python, объясненные с помощью кода, который мы запускали: __init__, методы, атрибуты класса и экземпляра, наследование, свойства, м…

Читать статью →
Искусственный интеллект

Что такое большая языковая модель? Как работают LLM, объяснено без шумихи

Что такое большая языковая модель? LLM объясняется простым языком: токены, встраивания, внимание, обучение, температурные и контекстные окна, крошеч…

Читать статью →
DevOps

Команды Linux для начинающих: основное руководство по терминалу с примерами

Команды Linux для начинающих, сгруппированные по задачам: навигация, файлы, просмотр журналов, grep, каналы, разрешения, процессы и архивы, с практи…

Читать статью →
Автоматизация тестирования

Selenium vs Playwright: ключевые различия, сравнение кода и что выбрать

Сравнение Selenium и Playwright: архитектура, ожидание, поддержка браузера и языка, отладка, одинаковый тест в обоих инструментах, советы по миграци…

Читать статью →
Тестирование ПО

Разделение эквивалентности: метод проектирования тестов, объясненный на рабочих примерах

Объяснение эквивалентного разделения: как найти действительные и недействительные разделы, рабочие примеры для возрастов, паролей и купонов, проведе…

Читать статью →
Тестирование ПО

Серьезность и приоритет в тестировании программного обеспечения: различия, матрица и реальные примеры

Объяснение серьезности и приоритета при тестировании программного обеспечения: четкие определения, четырехсторонняя матрица с примерами, шкалы уровн…

Читать статью →
Базы данных и SQL

Учебное пособие по подзапросам SQL: типы, коррелирующие подзапросы и EXISTS с примерами

Руководство по подзапросам SQL с выполненными нами запросами: скалярные подзапросы, IN, FROM и SELECT, коррелированные подзапросы, EXISTS, ловушка N…

Читать статью →
Базы данных и SQL

Объяснение транзакций SQL и ACID: COMMIT, ROLLBACK и уровни изоляции

Транзакции SQL и ACID, объясненные с помощью банковского перевода, который мы выполнили: COMMIT, ROLLBACK, точки сохранения, блокировки, уровни изол…

Читать статью →
Разработка ПО

Git Commands Cheat Sheet: The Commands You Actually Use, With Examples

Шпаргалка по командам Git, сгруппированная по задачам: настройка, промежуточный этап, ветки, удаленные устройства, тайник, история и исправление оши…

Читать статью →
Разработка ПО

Объяснение промисов в JavaScript: then, catch, Promise.all и распространенные ошибки

Обещания JavaScript, объясненные с помощью кода, который мы запускали: состояния, цепочки then и catch, обработка ошибок, Promise.all, allSettled, R…

Читать статью →
Разработка ПО

Учебное пособие по словарю Python: методы, примеры и общие шаблоны

Учебное пособие по словарю Python с кодом, который мы выполнили: создание, чтение и обновление словарей, ключевые методы, слияние, понимание, шаблон…

Читать статью →
Искусственный интеллект

Что такое РАГ? Генерация с расширенным поиском, объясненная на рабочем примере

Что такое РАГ? Retrieval-augmented generation explained step by step: indexing, chunking, embeddings, retrieval, a small working Python example, eva…

Читать статью →
DevOps

Учебное пособие по Terraform для начинающих: инфраструктура как код от первого файла до модулей

Учебное пособие по Terraform для начинающих: начните без облачной учетной записи, изучите инициализацию, планирование и применение, затем переменные…

Читать статью →
DevOps

Docker и Kubernetes: ключевые различия, как они работают вместе и что вам нужно

Объяснение Docker и Kubernetes: что делает каждый из них, одно и то же приложение работает с обоими, сравнение Docker Compose и Swarm, изменение doc…

Читать статью →
Автоматизация тестирования

Учебное пособие по Pytest для начинающих: фикстуры, параметризация и реальные примеры

Учебное пособие по pytest для начинающих с тестами, которые мы запускали на pytest 9.2: утверждения, фикстуры, параметризация, conftest, маркеры, tm…

Читать статью →
Тестирование ПО

Жизненный цикл тестирования программного обеспечения (STLC): 6 этапов, критерии входа и выхода, пример

Объясняется жизненный цикл тестирования программного обеспечения: шесть этапов STLC с критериями входа и выхода, результаты, пример проработанной фу…

Читать статью →
Разработка ПО

Git merge vs rebase: отличия, примеры и когда что использовать

Git merge vs rebase с реальным выводом log, сравнительной таблицей, золотым правилом rebase и безопасным рабочим процессом для команды.

Читать статью →
Разработка ПО

Генераторы списков в Python: синтаксис, примеры и когда их избегать

Генераторы списков в Python: синтаксис, фильтры, if-else, вложенные циклы, измеренное время и случаи, когда обычный цикл for лучше.

Читать статью →
Базы данных и SQL

SQL JOIN: объяснение с примерами (Inner, Left, Right, Full)

Разберите SQL JOIN шаг за шагом на примерах таблиц и запросов: INNER, LEFT, RIGHT, FULL, CROSS и SELF, а также частые ошибки и советы по производите…

Читать статью →