Po git checkout nie idzie wykonać push/publish

Po git checkout nie idzie wykonać push/publish
DO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 165
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ć???

kzkzg
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 935
0

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

KamilAdam
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5549
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ąś 💩

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
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)

.andy
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1524
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.

Wyjątek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 86
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.

GH
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 811
1

git reset --hard

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.