Git Flashcards

1
Q

Переименовать ветку

A

git branch -m main

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Подтянуть изменения

A

git pull –rebase

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Восстановить удаленный файл (из рабочей директории) или отменить изменения в файле

A

git restore some_filename

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Команда, которая удаляет файл и одновременно подготавливает изменение к коммиту

A

git rm some_filename # равносильно rm + git add

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Какие изменения по умолчанию показываются командой git diff, как копнуть глубже?

A

По умолчанию git diff показывает изменения только для тех модифицированных файлов, которые еще не были добавлены в индекс. Подразумевается, что добавленные в индекс файлы смотреть не нужно, ведь мы их уже подготовили к коммиту.
Для этого нужно запустить команду с флагом –staged
git diff –staged

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Вывод истории коммитов с записями одной строчкой

A

git log –oneline
git log –pretty=oneline # полные хэши

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Сокращенный хэш-идентификатор коммита, откуда берется?

A

Первые 7 символов полного хэша

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Команда для просмотра изменений в рамках одного коммита

A

git show хэш_коммита
Выведется diff м/у этим коммитом и предыдущим

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Команда для того чтобы узнать кто последним менял строчку в файле

A

git blame file_name

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Команда для поиска по репозиторию

A

git grep some_line
Она удобнее обычного grep, так как знает про игнорирование и не смотрит в директорию .git, а еще умеет искать по истории:
git grep -i hexlet # Флаг i позволяет искать без учета регистра
git grep Hexlet 5120bea # Поиск в конкретном коммите
git grep Hexlet $(git rev-list –all) # Поиск по всей истории, rev-list возвращает список хешей коммитов

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Как очистить рабочую директорию от неотслеживаемых файлов

A

git clean -fd # -f – force, -d – directory

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Отменить изменения файлов подготовленных к коммиту (staged)

A

Первый вариант — отменить изменения совсем, второй — отменить только индексацию, не изменяя файлы в рабочей директории. Второе полезно в том случае, если изменения нам нужны, но мы не хотим их коммитить сейчас.
git restore –staged INFO.md # извлечет из индекса
После этого можно повторно выполнить git restore для окончательного отката.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Команда для отмены изменений

A

git revert хэш_коммита
Создается еще один коммит, который выполняет изменения, противоположные тому коммиту, который отменяется.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Команда для удаления коммита

A

git reset –hard HEAD~
Не применять в совместных проектах - ломает историю у остальных, соответственно нежелательно применять после отправки на хостинг.
–hard означает полное удаление. Без него git reset отменит коммит, но не удалит его, а поместит все изменения этого коммита в рабочую директорию, так что с ними можно будет продолжить работать. HEAD~ означает “один коммит от последнего коммита”.
HEAD~2 # удалить два последних коммита.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Команда изменения последнего коммита (добавить файлы)

A

выполнять, только если не были отправлены на хостинг - под капотом выполняется в том числе reset. –amend не добавляет изменения в существующий коммит, этот флаг приводит к откату коммита (через reset) и выполнению нового коммита с новыми данными.

git commit –amend –no-edit
–amend не добавляет изменения в существующий коммит, этот флаг приводит к откату коммита (через reset) и выполнению нового коммита с новыми данными.
Т.к под капотом выполняется reset, то нельзя выполнять после отправки на хостинг.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Как перейти к режиму в котором можно выбирать для индексирования отдельные части (в том числе строки файла)

A

git add -i
git add –interactive

17
Q

Какую команду крайне желательно выполнить перед коммитом (чтобы изучить сделанные изменения)

A

git diff –staged

18
Q

Команда для того чтобы узнать текущее местоположение, если не настроен PS1

A

git branch

19
Q

Команда для перемещения по истории | переключения на какой-либо коммит

A

git checkout хэш_коммита
git checkout main

20
Q

.gitignore специфика путей и имен

A

access.log # игнорируется файл в любой директории проекта
node_modules/ # Игнорируется директория в любой директории проекта
/coverage/ # игнорируется каталог в корне рабочей директории
/db/.sqlite3 # игнорируются все файлы с расширением sqlite3 в директории db
, но не игнорируются такие же файлы внутри любого вложенного каталога в db
doc/**/
.txt # игнорировать все .txt файлы в каталоге doc/ на всех уровнях вложенности

21
Q

Удалить файл из репозитория, но не из рабочей директории

A

git rm –cached

22
Q

“Припрятать” текущие наработки (рабочая директория и индекс)

A

git stash
git stash pop # вытащить из стека

23
Q

Как сделать запрос на включение изменений кода (pull request)

A

Первым шагом необходимо создать копию репозитория в своем аккаунте. Делается это буквально одной кнопкой «Fork» на странице репозитория.
После этого действия в вашем аккаунте окажется репозиторий с таким же именем. GitHub знает, что это копия оригинального репозитория, и помечает его особым образом. Дальше все как обычно. Мы клонируем репозиторий на компьютер и производим необходимые изменения. Хорошей практикой считается делать изменения в отдельной ветке (обычно созданной от ветки main).
После того как изменения залиты на GitHub, в его интерфейсе произойдут изменения. На странице склонированного репозитория появится кнопка «pull request».
Если ее нажать, то откроется страница, на которой можно указать название пулреквеста и его описание. После отправки пулреквеста в исходном (оригинальном) репозитории на странице «Pull requests» отобразится ваш запрос.
В более простых ситуациях, когда достаточно исправить текст или опечатку, GitHub позволяет сделать пулреквест прямо из своего интерфейса. Для этого достаточно открыть любой файл проекта и нажать на иконку редактирования. После завершения редактирования GitHub сам предложит создать пулреквест с этим изменением.