Как я могу увидеть представление Git-обновления без ускоренной перемотки вперед?
Я пытаюсь git push origin master
и получить ошибку ! [rejected] master -> master (non-fast-forward)
, Я понимаю, что означает ошибка. (1)
Тем не менее, я хочу решить, стоит ли --force
обновление в любом случае. Для этого мне нужно увидеть и сравнить коммиты моей локальной ветки и целевой удаленной ветки. Как я могу видеть их рядом? Я бы предпочел использовать инструмент с графическим интерфейсом, как gitg
, но удобочитаемой опции командной строки будет достаточно.
(1) Это означает, что моя локальная ветвь не является прямым потомком целевой удаленной ветки. Это объясняется в:
- Примечание о перемотке вперед (документация Git)
- GitHub, помогите
- Что это значит, что Git-push не может быть быстро слито? (Переполнение стека)
- ... и многое другое
1 ответ
Вы можете использовать следующие инструменты для визуализации и сравнения репозиториев:
git log --graph
Вы можете использовать командную строку git:
git log --graph --oneline --all --decorate
Со страницы руководства: "Нарисуйте текстовое графическое представление истории коммитов в левой части вывода. Это может привести к тому, что между коммитами будут напечатаны дополнительные линии, чтобы история графа отображалась правильно".
См. Просмотр истории коммитов для примера (вам придется немного прокрутить вниз).
gitk
Вы можете использовать графический интерфейс gitk:
git fetch origin # make sure you are up-to-date
gitk branchname origin/branchname # launch gitk
С помощью этой команды вы можете увидеть, как разошлись локальная и удаленная ветки.
Другие инструменты
Другие инструменты графического интерфейса могут иметь аналогичные параметры визуализации. См . Ответ Роба Мэйоффа на "Что означает, что Git-push не может быть быстро объединен?" для примера того, что вы можете увидеть.
Non-перемотка вперед
Все эти инструменты были упомянуты при изучении того, почему git pull обновляется, но git push отказывается от перемотки вперед в StackOverflow. Ответы включают советы по устранению не-перемотки вперед без форсирования. (Распространенной причиной является наличие локальной ветви с тем же именем, что и у удаленной - например, с именем локальной и удаленной ветви origin/new-feature
вместо того, чтобы местное отделение назвали просто new-feature
.)