Git Flashcards
Переименовать ветку
git branch -m main
Подтянуть изменения
git pull –rebase
Восстановить удаленный файл (из рабочей директории) или отменить изменения в файле
git restore some_filename
Команда, которая удаляет файл и одновременно подготавливает изменение к коммиту
git rm some_filename # равносильно rm + git add
Какие изменения по умолчанию показываются командой git diff, как копнуть глубже?
По умолчанию git diff показывает изменения только для тех модифицированных файлов, которые еще не были добавлены в индекс. Подразумевается, что добавленные в индекс файлы смотреть не нужно, ведь мы их уже подготовили к коммиту.
Для этого нужно запустить команду с флагом –staged
git diff –staged
Вывод истории коммитов с записями одной строчкой
git log –oneline
git log –pretty=oneline # полные хэши
Сокращенный хэш-идентификатор коммита, откуда берется?
Первые 7 символов полного хэша
Команда для просмотра изменений в рамках одного коммита
git show хэш_коммита
Выведется diff м/у этим коммитом и предыдущим
Команда для того чтобы узнать кто последним менял строчку в файле
git blame file_name
Команда для поиска по репозиторию
git grep some_line
Она удобнее обычного grep, так как знает про игнорирование и не смотрит в директорию .git, а еще умеет искать по истории:
git grep -i hexlet # Флаг i позволяет искать без учета регистра
git grep Hexlet 5120bea # Поиск в конкретном коммите
git grep Hexlet $(git rev-list –all) # Поиск по всей истории, rev-list возвращает список хешей коммитов
Как очистить рабочую директорию от неотслеживаемых файлов
git clean -fd # -f – force, -d – directory
Отменить изменения файлов подготовленных к коммиту (staged)
Первый вариант — отменить изменения совсем, второй — отменить только индексацию, не изменяя файлы в рабочей директории. Второе полезно в том случае, если изменения нам нужны, но мы не хотим их коммитить сейчас.
git restore –staged INFO.md # извлечет из индекса
После этого можно повторно выполнить git restore для окончательного отката.
Команда для отмены изменений
git revert хэш_коммита
Создается еще один коммит, который выполняет изменения, противоположные тому коммиту, который отменяется.
Команда для удаления коммита
git reset –hard HEAD~
Не применять в совместных проектах - ломает историю у остальных, соответственно нежелательно применять после отправки на хостинг.
–hard означает полное удаление. Без него git reset отменит коммит, но не удалит его, а поместит все изменения этого коммита в рабочую директорию, так что с ними можно будет продолжить работать. HEAD~ означает “один коммит от последнего коммита”.
HEAD~2 # удалить два последних коммита.
Команда изменения последнего коммита (добавить файлы)
выполнять, только если не были отправлены на хостинг - под капотом выполняется в том числе reset. –amend не добавляет изменения в существующий коммит, этот флаг приводит к откату коммита (через reset) и выполнению нового коммита с новыми данными.
git commit –amend –no-edit
–amend не добавляет изменения в существующий коммит, этот флаг приводит к откату коммита (через reset) и выполнению нового коммита с новыми данными.
Т.к под капотом выполняется reset, то нельзя выполнять после отправки на хостинг.