Po git checkout nie idzie wykonać push/publish

0

Cześć,
W celach ratunkowych cofnęłam się do commita kilka wersji wstecz komendą
git checkout <XXX>. Wszystko zagrało, to było feralne miejsce, wprowadziłam poprawki, zrobiłem nowy commit i próbowałam go opublikować,ale rzuciło błąd Unable to push repository see output channel for more info W kanale jest komunikat, że "stderr": "fatal: invalid refspec '(YYY...)'\n". (YYY odpowiada kodowi tego ostatniego commita). Sprawdziła git status i pokazało się że

HEAD detached from XXX nothing to commit, working tree clean
XXX to dla przypomnienia commit, do którego się cofnęłam checkoutem.
Moje pytanie jest takie — olewam historię, chcę zrobić pusha z YYY i ciagnąć nowe od tego momentu. Czy cokolwiek, co miało miejsce po XXX się zachowa, czy nie - absolutnie nieistotne, liczy się YYY na samym wierzchu. Jak to zrobić???

0

git reset żeby się cofnąć. Potem commit i push z force

1

Po kolej, cofnąłeś się do commita więc nie jesteś już na gałęzi tylko na commicie. Masz teraz trzy wyjścia jak chcesz coś skomitować:

  1. Utworzyć nową gałąź z tego commita gdzie jesteś, usunąć starą gałąź, i przemianować nową gałąź na starą
  2. Wrócić do HEAD gałązi i usunąć niepotrzebne commity
  3. Wrócić do HEAD gałązi i rewertować niepotrzebne commity

Przy zabezpieczonej gałęzi przejdzie tylko opcja nr 3

Update za długo pisałem

@kzkzg jest takie proste git reset? A ja rzeźbię jakąś 💩

1

@Doctanna no bo nie da się zrobić czegoś takiego co opisujesz, bo w ten sposób nadpisujesz zmiany z originu i bez force nie pójdzie. Zamiast checkout należy zrobić git reset hard na commit do którego chcesz wrócić a potem push force żeby nadpisać historię. Jesli to protected branch to prościej byłoby pewnie revert i utworzyć commit który "wycofuje" te zmiany których chcesz się pozbyć (ale wtedy wszystko zostaje w historii)

1

Dziwne to dla mnie. Nie można było sobie po prostu zobaczyć co tamten ferelny commit zmieniał i zrobić nowy w którym robisz fiksa? Oczywiście nowy commit w nowej gałęzi.

1
Doctanna napisał(a):

chcę zrobić pusha z YYY i ciagnąć nowe od tego momentu. Czy cokolwiek, co miało miejsce po XXX się zachowa, czy nie - absolutnie nieistotne, liczy się YYY na samym wierzchu. Jak to zrobić???

O ile dobrze pamiętam:
git checkout YYY <- wchodzisz w tryb detached head
kopiujesz wszystkie pliki gdzieś indziej
git checkout master <- wracasz gdzie byłaś wcześniej
nadkopiowujesz zachowane pliki z powrotem
git commit -m"YYY na topie again"

Podany pomysł z git reset YYY też jest dobry, ale serwer może być zabezpieczony przed zmienianiem przeszłości i nie da się pushować tego bez merga.

1

git reset --hard

1 użytkowników online, w tym zalogowanych: 0, gości: 1