Сценарий:
- Делаю новую ветку
- взломать это
- совершить это
- толкни это
- взломай это еще
- совершить снова
- попробуй снова нажать
Git отвечает:
Обновления были отклонены, потому что вершина вашей текущей ветки находится позади удаленной копии. и т.п.
Я один взламываю эту ветку - больше никто ее не трогает. Удаленная ветка фактически находится за локальной веткой. Мне вообще не следовало тянуть.
(И если я потяну, Git сообщит о конфликтах между ними и заставит меня объединить ветку в себя)
Почему это (вероятно) происходит? И как мне это диагностировать / исправить?
Чтобы было ясно, я никуда не делаю ветвления, и никто больше не работает над этим:
Remote: Commit A -------- Commit B
Local: Commit A -------- Commit B -------- Commit C
C является прямым продолжением B без ветвления. Но git думает, что C - это ветвь A:
Remote: Commit A -------- Commit B
------- Commit C
/
Local: Commit A -------- Commit B
Это не; это прямое продолжение Б.
git remote -v
иgit show remote origin
(при условии, что origin - это пульт, с которым у вас проблемы) может быть полезнымОтветы:
Вы наверное переписывали историю? Ваш локальный филиал отличается от филиала на сервере. Выполните эту команду, чтобы лучше понять, что произошло:
Я настоятельно рекомендую вам попытаться понять, откуда эта ошибка. Чтобы исправить это, просто запустите:
-f
Делает это «принудительный толчок» и перезаписывает ветку на сервере. Это очень опасно, когда ты работаешь в команде. Но поскольку вы сами по себе и уверены, что ваш местный штат правильный, все должно быть в порядке. Если это не так, вы рискуете потерять историю коммитов.источник
HEAD
и@{u}
ссылка на коммиты. Они сообщают gitk, какие ветви отображать.HEAD
относится к текущей проверенной ветке,@{u}
это сокращение отHEAD@{u}
, которое представляет восходящую ветвь текущей проверенной ветки. Так, например,master
, это обычноorigin/master
.gitk
помогло!Решение очень простое и сработало для меня.
Попробуй это :
тогда
источник
Это случилось со мной, когда я пытался нажать ветку разработки (я использую git flow). У кого-то были push-обновления для мастера чтобы исправить это я сделал:
Что и привело к этим изменениям. Потом,
Что ничего не дало. Я думаю, что ветвь разработки уже запущена, несмотря на сообщение об ошибке. Сейчас все в актуальном состоянии, ошибок нет.
источник
Чтобы диагностировать это, следуйте этому ответу .
Но чтобы исправить это, зная, что вы единственный, кто его изменяет, выполните:
1 - сделайте резервную копию вашего проекта (я сделал только файлы в git, папке ./src)
2 -
git pull
3 - восстановите резервную копию множества "испорченных" файлов ( с индикаторами слияния)
Я пробовал,
git pull -s recursive -X ours
но не получилось так, как я хотел, это может быть вариант, но сначала сделайте резервную копию !!!Убедитесь, что отличий / изменений (в git gui) нет. Это мой случай, сливать вообще нечего, но github все время говорит, что надо сливать ...
источник