Записки погромиста

Записки погромиста на вольные темы

Исправляем ошибки в Git. Часть 1.

1.  Исправляем сообщение коммита, который еще не был отправлен.

Если мы видим, что сообщение коммита содержит ошибку, это легко исправить командой git commit --amend -m "Сообщение без ошибок"

2. Добавляем файлы в коммит перед пушем.

Если git status показывает что у нас остались файлы, не добавленные в коммит, но имеющий изменения, мы можем добавить их командой git add -

3. Убираем файлы из коммита перед пушем.

Если в наш коммит пробрались файлы, которые мы не хотим пушить в ориджин, их можно убрать из коммита командой git reset HEAD <yourfilename>

Как это работает. HEAD — это указатель на текущий бранч и хэш коммита, когда вы выполняем команду git reset HEAD мы восстанавливаем состояние бранча до того, когда этого файла не было в коммите.

4. Убираем изменения из коммита перед пушем.

Если вдруг перед пушем Вам пришла в голову замечательная идея проверить изменения в коммите с помощью git diff и вы увидели, что в коммите есть изменения, которые не должны попасть в ориджин, вы можете убрать их из коммита. Для этого мы смотрим состояние нашего бранча с помощью git log   —oneline (мы ведь не хотим простыню с логами на весь экран) и видим, что можем поменять состояние бранча до желаемого с помощью git reset HEAD~1 (или к конкретному состоянию по хэш коду, например git reset <hashcode>.   

5. git reset —soft —mixed —hard.

Основная разница между этими коммандами заключается в следующем:

--soft  — возвращает изменения из коммита в состояние стейджа.

--mixed — возвращает изменения из коммита, а так же убиирает файл из стейджа.

--hard — не только возвращает изменения из коммита, но и отменяет сделанные изменения. Используйте эту команду с осторожностью.

6. Восстанавливаем изменения, сделанные с помощью git reset —hard.

Если мы внезапно поняли, что только что удаленные изменения нам нужны, можно использовать команду git reflog, которая покажет хэш коммита предыдущего коммита, к которому мы хотим вернуть состояние и вызовем команду git reset --hard <hashcode>

7. Отменяем коммит, который уже был запушен.

Если мы хотим изменить файлы, затронутые коммитом, который уже был запушен в ориджин, мы не можем использовать git reset, потому что это перепише историю и вызовет конфликты у пользователей, которые уже получили наш коммит.

Для отменя коммита мы можем использовать команду git revert <commithashcode>. Далее мы увидим в консоли сообщение об изменении коммита, нажимаем esq  для выхода из Vim и отправляем новый коммит в ориджин.

8. Копируем коммит из одного бранча в другой.

Для начала скопируем хэш код коммита, который мы хотим скопировать в другой бранч и делаем чекаут на ветку, в котору хотим добавить желаемый коммит. После этого воспользуемся командой git cherry-pick <hashcode>. Если потом мы введем git log --oneline, то увидим, что нужный коммит появился и в другом бранче.

Published by

Оставьте комментарий