Любой IT специалист должен знать эти слова: GIT и GITHUB?
С этим тезисом мало кто поспорит.
Скорее всего каждый из нас ежедневно сталкивается с git в домашних проектах и на работе. Но если вы вообще не знаете, что это за технология - скорее всего вам нужно полноценно погрузиться в тему и эта статья будет вам на вырост. Напишите в комментах, если тему git нужно раскрыть с нуля.
Скорее всего это будет даже не статья, а некая шпаргалка для проходящих собеседы, некое направление: что-то посмотреть, о чем-то почитать, что-то вспомнить и тд.
Вообщем-то мы начинаем КВН =)
Как переименовать ветку?
# Переименовать текущую ветку
git branch -m [new-name]
# Если мы находимся в любой ветка
git branch -m [old-name] [new-name]
Как удалить файл/папку из репозитория?
git rm -r --cached [file/folder]
Как объединить несколько комитов в один цельный комит?
# Открываем интерактивное меню rebase
git rebase -i HEAD~[число комитов]
# Проставляем s(squash)
# Заливаем все изменения
git push --force
За что отвечает команда git bisect?
Для выполнения поиска комита сломавшего логику
git bisect start
git bisect bad
git bisect good [хеш комита]
Как настроить репозиторий для запуска инструментов проверки работоспособности кода непосредственно перед выполнением комитов?
Это делается с помощью хука pre-commit. Для этого нужно прописать код проверки в конфигурационном файле pre-commit (.git/hooks). Git будет запускать данную проверку перед каждым комитом. Один из популярных - hasky.
Что такое tag в репозитории?
Способ поставить какую-то точку в истории git.
# Создать тег
git tag [name]
# Создать аннотированный тег
git tag -a [name] [-m "Описание тега"]
Как поменять ссылку на удаленный репозиторий?
# Посмотреть текущие ссылки на удаленый репозиторий
git remote -v
# Добавить ссылку на удаленный резизиторий
git remote add origin [url_of_git_repository]
# Изменить ссылку на удаленный репозиторий
git remote set-url origin [newurl_of_git_repository]
Как можно отменить коммит, если он не был опубликован?
# Вариант 1. В интерактивном режиме выполнить команду drop
git rebase -i
# Вариант 2.
git reset HEAD~
git add --all
git reset --hard
В чем заключается разница между git pull и git fetch?
# Извлекает все изменения текущей ветки с сервера
git pull
# Получает все отсутствующие данные с удаленного
# репозитория, но не сливает их
git fetch
Что такое stage/unstage или index?
Области файлов, которые готовы к следующему комиту или еще не готовы.
За что отвечает команда git stash?
Команда которая сохраняет текущие не закомиченные изменения в локальном хранилище.
# Показывает список всех stash записей
git stash list
# Сохранить изменения в stash
git stash
git stash save [name_in_stash_list]
# Выгружает изменения из stash в текущую ветку
# для работы, удаляя запись
git stash pop
# Выгружает изменения из stash в текущую ветку
# для работы, но не удаляет запись
git stash apply [--index [index]]
# Удаляет запись из stash
git stash drop
# Удаляет все наборы отложенных изменений
git stash clear
За что отвечает команда git rebase?
Изменяет историю комитов, добавляя комиты в конец ветки, изменяя только хеш комитов. Нужно очень грамотно использовать в больших командах.
git rebase [branch_name]
За что отвечает команда git merge?
Загрязняет ветку мерж комитами, но не изменяет историю комитов.
git merge [branch_name]
Какие модели ветвления вы знаете?
GitFlow - есть две основные ветки main и develop.
GitHubFlow - есть основная ветка main.
Как создать репозиторий?
# Инициализировать локально
git init
# Клонировать удаленный репозиторий
git clone [url]
Из чего состоит комит?
Это односвязанный список, который состоит из объектов с измененными файлами и ссылки на предыдущий комит. Так же указаны имя автора, метки времени и сообщение комита.
Каким образом можно установить было слияние ветки или нет?
git branch --merged
За что отвечает команда git config?
Позволяет работать с конфигурацией git репозитория.
Как найти список файлов, которые изменились в определенном комите?
# Загружаем список комитов
git log
# Открываем список изменения комита
git show [хеш комита]
Я думаю эти вопросы/ответы будут полезны в работы, как таблица умножения в школе. Если вы хотите узнать подробнее про Git - буду рад пообщаться в комментах.
Другие мои статья:
Комментарии (56)
Nprasolov
10.05.2024 19:37+15имхо если на собеседовании спрашивают рандомные вопросы из документации - смысла туда идти нет
paulbuzakov Автор
10.05.2024 19:37Я искал и составлял те вопросы, которые сам периодически задавал, чтобы понять адекватность. Пока искал узнал пару интересностей.
gun_dose
10.05.2024 19:37+2Это всё фигня. Самое важное - это научить людей во время разрешения конфликтов в IDE применять изменения с нужной стороны. У нас был чел на проекте, месяца три работал, так он абсолютно всегда применял изменения не с той стороны. Люди с ума сходили, вроде сделал фичу, тестер протестил, задеплоили, а клиент говорит, что не работает. Стягиваешь последний develop, думаешь, ща поставлю брейкпоинт в своём коде и буду дебажить, а твоего кода просто нет!!!
kokorins
очень полезная шпаргалка. ответил на все вопросы кроме последнего, но, блин, я мозг сломал, что удаленный репозиторий это не deleted а remote.
paulbuzakov Автор
У меня где-то опечатка есть?
paulbuzakov Автор
Ааа, ок увидел)) благодарю