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 и форс пуш.