Любой 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)


  1. kokorins
    10.05.2024 19:37

    очень полезная шпаргалка. ответил на все вопросы кроме последнего, но, блин, я мозг сломал, что удаленный репозиторий это не deleted а remote.


    1. paulbuzakov Автор
      10.05.2024 19:37

      У меня где-то опечатка есть?


    1. paulbuzakov Автор
      10.05.2024 19:37

      Ааа, ок увидел)) благодарю


  1. Nprasolov
    10.05.2024 19:37
    +15

    имхо если на собеседовании спрашивают рандомные вопросы из документации - смысла туда идти нет


    1. paulbuzakov Автор
      10.05.2024 19:37

      Я искал и составлял те вопросы, которые сам периодически задавал, чтобы понять адекватность. Пока искал узнал пару интересностей.


  1. gun_dose
    10.05.2024 19:37
    +2

    Это всё фигня. Самое важное - это научить людей во время разрешения конфликтов в IDE применять изменения с нужной стороны. У нас был чел на проекте, месяца три работал, так он абсолютно всегда применял изменения не с той стороны. Люди с ума сходили, вроде сделал фичу, тестер протестил, задеплоили, а клиент говорит, что не работает. Стягиваешь последний develop, думаешь, ща поставлю брейкпоинт в своём коде и буду дебажить, а твоего кода просто нет!!!