Не пушит новые commit на GitHub
Всем добрый день!
Совсем новенький с GitHub. Создал 2 тестовых коммита проекта. Запушил на первом и втором в ветку master и все сработало. После этого создал ещё 2 тестовых коммита. Снова попытался запушить командой git push origin master.
Выдало, что все хорошо: Everything up-to-date
Но на GitHub новые коммиты не отобразились. Там находятся только 2 первых.
Работаю только с веткой master - новых не создавал. Head сейчас находится на последнем - 4-ом коммите.
Вот информация с git log:
commit 7a1cc12c2bbbff3f70a394256871e27d57109c11 (HEAD)
Author: Nikolay Mareev <[email protected]>
Date: Mon Feb 19 01:12:20 2024 +0300
Четвертая версия
commit a48b049e1a8877a92c5f88099734a0518776294c
Author: Nikolay Mareev <[email protected]>
Date: Mon Feb 19 01:05:05 2024 +0300
Третья версия
commit 60d1d548ba90d7961e3bc3b583b96c6f12ce835a (origin/master, master)
Author: Nikolay Mareev <[email protected]>
Date: Mon Feb 19 00:49:34 2024 +0300
Вторая тестовая версия
commit f57338f991f654884f1a731d817249eb490cc44a
Author: Nikolay Mareev <[email protected]>
Date: Mon Feb 19 00:48:27 2024 +0300
Тестовая версия
Информация с git status:
HEAD detached at 7a1cc12
nothing to commit, working tree clean
Подскажите, пожалуйста, в чем может быть моя ошибка? Как запушить на гитхаб в ветку master?
Ответы (2 шт):
Если я ничего не путаю, HEAD означает, что изменения сделаны на локальном репозитории, origin/master - что внесены в ветку master на удаленном. Возможно, Вы пропустили команду add, поэтому внесённые Выми изменения не закомитились и не запушились.
HEAD detached говорит о том, что "голова" отделена. Вы, похоже, делали чекаут непосредственно на конкретный коммит какой-то, а не на ветку, и теперь надо голову, как раз, вернуть обратно на ветку.
Самое простое в вашем случае, может помочь слияние с быстрой перемоткой:
git checkout master
git merge --ff 7a1cc12c2bbbff3f70a394256871e27d57109c11
Это может сработать потому, что на мастере больше не было никаких коммитов после "отделения"
Либо переход обратно на ветку мастера и внесение в неё других коммитов:
Нужно ещё раз убедиться, что всё закоммичено в текущем...коммите
Далее перейти на свою рабочую ветку
git checkout masterЕсли нужно, влить в неё коммиты 3 и 4, чтобы они там были:
git cherry-pick <hash1> <hash2>Сделать
push
NOTE: Во время черри пикинга могут быть конфликты, которые надо будет решать. В терминале будут подсказки, так или иначе
Чтиво по черри пикингу:
- https://www.dev-notes.ru/articles/git/demystifying-git-cherry-pick/
- https://www.atlassian.com/ru/git/tutorials/cherry-pick#:~:text=git%20cherry-pick%20—%20это%20полезная,это%20удобный%20способ%20отменить%20изменения.
- https://git-scm.com/book/ru/v2/Распределённый-Git-Сопровождение-проекта#r_rebase_cherry_pick
- и т.д.
UPD: Как советуют в комментарии, можно сделать так:
git checkout HEAD -B master