Перейти к основному содержимому

GIT

Что такое Git и для чего он используется?

Git — это распределенная система контроля версий, которая используется для отслеживания изменений в исходном коде, кооперативной разработки и синхронизации кода между различными разработчиками.

Что такое слияние веток (merge)?

Слияние веток в Git — это процесс объединения изменений из одной ветки в другую. Для этого переключитесь на целевую ветку с помощью git checkout, а затем выполните команду git merge имя_ветки_с_изменениями.

Конфликты при слиянии?

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

Разница git rebase от git merge?

git rebase переносит все коммиты из одной ветки на другую, сохраняя линейную историю. Отличие от git merge заключается в том, что rebase обеспечивает более чистую и линейную историю коммитов, но может усложнить процесс разрешения конфликтов и не подходит для публичных веток.

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

git reset HEAD~1 отменяет последний коммит, оставляя изменения в рабочем дереве. git reset --hard HEAD~1 полностью отменяет последний коммит и удаляет все изменения из рабочего каталога. git reset --soft HEAD~1 отменяет последний коммит, но оставляет изменения в индексе, готовые к повторному коммиту.

Стратегии для организации работы с ветками?

Feature Branch Workflow Создание отдельной ветки для каждой новой функции или задачи, с последующим слиянием обратно в основную ветку.

GitHub Flow Работа непосредственно в основной ветке с созданием новых веток для функций или исправлений через pull request.

Trunk-Based Development (TBD) Все разработчики работают непосредственно в основной ветке, что упрощает процесс слияния и контроль изменений.

Forking Workflow Каждый разработчик создает форк основного репозитория для работы над своими изменениями, с последующим слиянием через pull request.

GitLab Flow Модификация Git Flow с дополнительными этапами и использованием merge requests для управления слиянием.

Что такое git stash?

Git stash позволяет временно сохранить незакоммиченные изменения в рабочем дереве. Сохранить изменения можно с помощью команды git stash или git stash save, а восстановить изменения — с помощью команды git stash apply или git stash pop.

Как использовать git cherry-pick?

Git cherry-pick позволяет применить изменения из одного коммита в другую ветку, создавая новый коммит с теми же изменениями. Используйте команду git cherry-pick <хэш_коммита>, где <хэш_коммита> — идентификатор коммита, изменения из которого вы хотите применить.

Теги в Git?

Теги в Git — это ссылки на определенные коммиты, используемые для обозначения важных точек в истории репозитория, например, для маркировки релизов. Создать тег можно с помощью команды git tag -a <имя_тега> -m "сообщение", где <имя_тега> — имя тега, а "сообщение" — описание тега. Теги можно отправить в удаленный репозиторий с помощью команды git push --tags.

Команды Git

  • git init эта команда инициализирует новый локальный репозиторий Git в текущем рабочем каталоге. После выполнения этой команды, Git начнет отслеживать все изменения файлов в этом каталоге.

  • git clone <url> клонирует удаленный репозиторий Git на ваш компьютер. Вы можете указать URL удаленного репозитория в качестве аргумента. После выполнения этой команды, Git создаст локальную копию репозитория, включая все исторические данные и ветки.

  • git add <файл> добавляет определенные файлы для добавления в индекс

  • git add -A добавляет все измененные, новые и удаленные файлы в репозиторий, включая те, которые находятся в текущем каталоге и в подкаталогах.

  • git add . добавляет все файлы в текущем каталоге и подкаталогах, включая скрытые файлы (имена которых начинаются с точки).

  • git add -u добавляет только измененные и удаленные файлы, но не новые файлы.

  • git stage современный аналог git add.

  • git status показывает состояние файлов в рабочем каталоге и индексе. Эта команда показывает, какие файлы были изменены, добавлены в индекс и готовы к коммиту.

  • git diff просмотр изменений в рабочем каталоге, которые еще не были добавлены в индекс

  • git diff --staged просмотр изменений, которые были добавлены в индекс и готовы к коммиту

  • git diff HEAD просмотр изменений между рабочим каталогом и последним коммитом

  • git commit -m "Сообщение коммита" фиксирует изменения в локальном репозитории с сообщением коммита. После выполнения этой команды, все изменения, добавленные в индекс с помощью git add, сохраняются в локальном репозитории.

  • git log показывает историю коммитов. Эта команда выводит список всех предыдущих коммитов в репозитории, включая информацию о коммите, такую как хеш коммита, автор, дата и сообщение коммита.

  • git push <remote> <branch> отправляет локальные коммиты в удаленный репозиторий. Вы указываете удаленное имя и ветку, в которую нужно отправить изменения.

  • git pull <remote> <branch> извлекает изменения из удаленного репозитория и объединяет их с текущей веткой. Эта команда комбинирует git fetch и git merge, чтобы получить и объединить изменения из удаленного репозитория.

  • git branch <branch> создает новую ветку. Вы можете указать имя новой ветки в качестве аргумента. После выполнения этой команды создается новая ветка на текущем коммите.

  • git checkout <branch> переключается на указанную ветку. Эта команда изменяет рабочий каталог и индекс так, чтобы соответствовать указанной ветке.

  • git merge <branch> объединяет указанную ветку в текущую ветку. Эта команда выполняет слияние изменений из указанной ветки в текущую ветку.

  • git remote add <name> <url> добавляет удаленный репозиторий с указанным именем и URL. Эта команда создает новую ссылку на удаленный репозиторий с указанным именем и URL.

  • git rebase <branch> применяет коммиты текущей ветки поверх указанной ветки. Это позволяет создавать линейную историю коммитов без создания дополнительных слияний.

  • git pull --rebase извлекает изменения из удаленного репозитория и переносит текущие коммиты поверх извлеченных

  • git stash позволяет на время «сдать в архив» (или отложить) изменения, сделанные в рабочей копии, чтобы вы могли применить их позже. Откладывание изменений полезно, если вам необходимо переключить контекст и вы пока не готовы к созданию коммита.

  • git stash pop вернуть файлы из архива git stash