Git: Очередной лист Вопросов и Ответов

3e40e13e8c557eecd0c99e9a606c1a42.png

Любой 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 — буду рад пообщаться в комментах.

НО если статья была настолько полезна, что вы хотите помочь мне в сборке домашнего сервера для одного интересного проекта — БУДУ РАД.

Другие мои статья:

Habrahabr.ru прочитано 3316 раз