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