Commands

Принудительная запись изменений

Позволяет принудительно обновить удалённую ветку, перезаписывая её содержимое на сервере.

git push --force
git push -f

Безопасная альтернатива. Обновляет удалённую ветку только если с момента последнего обновления этой ветки на сервере никто другой не внёс изменений. Если изменения есть, операция прервётся с ошибкой.

git push --force-with-lease
Отменить слияние

Используется для отмены процесса ребейза, если во время его выполнения возникли конфликты или другие проблемы. Она возвращает ветку в состояние, в котором она находилась до начала ребейза, удаляя все изменения, внесённые в ходе процесса.

git rebase --abort
Теги
git tag -a 1.0.0 -m "1.0.0" // создать тег
git push origin X.X.X // запушить тег в удаленный репозиторий
git tag -d X.X.X // удалить тег
git push -—delete origin X.X.X // удалить тег в удаленном репозитории
Показать журнал коммитов
git log --oneline 1.0.0..2.0.0
Установить глобального пользователя для системы
git config --global user.name "michaelbel"
git config --global user.email michael-bel@outlook.com
Установить локального пользователя для выбранного репозитория
git config user.name "michaelbel"
git config user.email michael-bel@outlook.com
Draft a new release

• Создаем PR develop to master с именем новой версии.

• На гитхабе включаем Settings → General → Pull Requests → Allow merge commits.

• Выбираем Create Merge Commit и мерджим.

• На гитхабе выключаем Settings → General → Pull Requests → Allow merge commits.

• В IDE переключаемся на ветку master, обновляем ее, ПКМ -> Update (Rebase).

git tag -a X.X.X -m «X.X.X».

git push origin X.X.X.

• Github → Releases → Draft a new release → Choose a tag → Generate release notes → Publish release (релиз может создавать ci).

Влить обновлённый master в develop

• В IDE checkout to develop.

• В IDE ПКМ по master → Rebase «develop» onto «master».

• Github → Settings → Branches → develop Edit.

• Require a pull request before merging (выключаем).

• Allow force pushes (включаем для Everyone).

• В IDE git push —force-with-lease.

• Github → Settings → Branches → develop Edit.

• Require a pull request before merging (включаем).

• Allow force pushes (выключаем).

Подтянуть изменения из develop в мою feature-ветку

• Подтянуть свежие изменения в develop.

• Переключиться на feature-ветку, выбрать в списке develop, выбрать Rebase Current onto Selected.

• Разрешить возможные конфликты.

• Запушить ветку в удаленный репозиторий командой git push —force-with-lease (это избавит от необходимости мерджить изменения перед обычным пушем).

Порешать конфликты

• Создать новую ветку из develop.

• Черри-пикнуть коммиты из старой ветки.

• Удалить старую ветку.

• Запушить новую ветку.

• Rebase current onto selected (даже с предупреждением).

• git push —force-with-lease (Будет 1 коммит, сохранить старое название).

Добавить изменения из другой ветки временно

Открываем Git, выбираем ветку, выбираем файл, ПКМ - Compare with local, применяем изменения.

Unresolved conflicts. can’t commit changes due to unresolved conflicts

Нажать Cancel. Изменения должны будут остаться незакоммиченными.

Cherry-pick failed. your local changes would be owerwritten by cherry-pick
git status
git restore --staged core/src/main/java/com/example/app/NetworkProvider.kt
В новом коммите откатить изменения

Открываем файлы в коммите, ПКМ → Compare before with local.

Откатить изменения в ветке к выбранному коммиту

ПКМ по коммиту → Reset Current Branch to Here.

Откатиться к предыдущему коммиту (сделанный будет удален) и удалить изменения из удаленного репозитория без следов. этот же способ также помогает отменить слияние в какую-либо ветку, переключаешься на ветку и откатываешься к предыдущему коммиту до слияния, затем делаешь форс-пуш в эту ветку
git reset --hard c3bcdbd0 (предыдущий стабильный коммит)
git push --force-with-lease

Правой кнопкой на коммит → Revert Commit и форс пуш.