Введение
🧑💻 Новый в Git или LabEx? Мы рекомендуем начать с курса Быстрый старт с Git.
Git - это мощная система контроля версий, которая позволяет разработчикам отслеживать изменения в их кодовой базе. Одной из ключевых функций Git является возможность переписывать историю, которая может быть полезной, когда вам нужно внести изменения в предыдущие коммиты. Однако переписывание истории может вызывать проблемы при попытке отправить изменения в удаленный репозиторий. В этом лабе вы узнаете, как обновить удаленную ветку после переписывания истории локально.
Обновление удаленной ветки после переписывания истории
Когда вы переписываете историю локально, вы создаете новый коммит с другим хешем SHA-1. Это означает, что история коммитов на вашей локальной ветке отличается от истории коммитов на удаленной ветке. Если вы попытаетесь отправить свои изменения в удаленную ветку, Git отклонит отправку, потому что увидит историю коммитов как расходящуюся. Чтобы решить эту проблему, вам нужно принудительно обновить удаленную ветку.
Для завершения этого лабара вы будете использовать репозиторий Git git-playground из вашего аккаунта GitHub, который является форком от https://github.com/labex-labs/git-playground.git.
- Клонируйте репозиторий
git-playgroundна свою локальную машину:
git clone https://github.com/your-username/git-playground.git
- Обновите коммит с сообщением "Added file2.txt" до коммита с сообщением "Update file2.txt":
git commit --amend
- Отправьте изменения из локальной ветки в удаленный репозиторий:
git push
- Если вы не можете отправить его успешно, выполните принудительную отправку:
git push -f origin master
Флаг -f заставляет Git обновить удаленную ветку с вашими изменениями, даже если история коммитов расходится.
Это конечный результат:
[object Object]
Резюме
В этом лабе вы узнали, как обновить удаленную ветку после переписывания истории локально. Используя команду git push -f, вы можете заставить Git обновить удаленную ветку с вашими изменениями, даже если история коммитов расходится. Важно использовать эту команду с осторожностью, так как она может перезаписать изменения, внесенные другими разработчиками.