Почему существует коммит слияния
Когда вы делаете ребаз, вы меняете историю Git. Когда вы снова делаете тягу, Git пытается снова объединить обе истории. Поскольку по умолчанию git pull
- это git fetch
+ git merge
, это приведет к фиксации слияния.
Это не то, что вам нужно после изменения истории, поскольку она (частично) отменит ваши изменения истории,К сожалению, намек на git status
немного вводит в заблуждение ...
Что вы должны делать после перебазирования / изменения истории
После изменения истории (например, перебазировки) вам нужно принудительное нажатие, чтобыВы также получите эту историю на пульте. Тогда вы говорите git: «История другая, но, поверьте мне, она предназначена».
Рекомендуется использовать «принудительный пуш с арендой»: git push --force-with-lease
- см. git push -сила-с-аренды против --force .
Шаги, чтобы исправить текущее состояние
К счастью, вы можете вернуться до git pull
, используя рефлог Git!
Это исправит неправильную тягу, и не будет никаких конфликтов, которые нужно решить:)
Итак, что нужно сделать:
- Найти правильный коммит в reflog
git reflog
, поэтому перед git pull
(примечание: вы можете выйти из журнала, набрав q ) - Git сбросить до этого коммита, например
git reset 327fb961e --hard
- Двойная проверкаи сделайте
git push --force-with-lease
.
Примечание: если вы допустили ошибку с git reset
, вы можете снова использовать git reflog
:)
Примечание 2: reflog только на вашем локальном компьютере