Lokalne repozytorium w "detached HEAD state"

0

jak używam git push origin HEAD:XXXXXX to tworzy mi osobny branch który później musze mergować. Tak jak to jest pokazane na zalaczonym skreenie. Jak wypchnac commita zeby wszystko szło po lini master??Zrzut ekranu z 2022-12-17 15-55-45.png

2

Po prostu git push - ew. za pierwszym razem git push --set-upstream origin/master (zakładając, że Twój remote nazywa się origin) i potem samo git push za kolejnymi razami.

0

Jak używam git push to mam nastepujacy komunikat

Zrzut ekranu z 2022-12-17 15-58-50.png

3

Jesteś w tzw. detached head state, czyli prawdopodobnie zrobiłeś git commit hash-commitu bądź git commit origin/master, przez co obecnie znajdujesz się jak gdyby "na commicie, ziemi niczyjej", a nie "na branczu" (wyobrażenie sobie tego zajmuje chwilę :-P).

tl;dr użyj git switch master - to powinno utworzyć kopię origin/master lokalnie u Ciebie (pod nazwą master) i automatycznie zrobić checkout na niego

0

wpisałem i mnie przerzuciło na master. Ale jak wpisuje git push to mam nastepujacy komunikat:

Zrzut ekranu z 2022-12-17 16-07-07.png

Dobra zrobiłem pull i teraz działa

1

Twoje lokalne master jest w tyle za origin/master (tj. robiąc pusza bez tego zabezpieczenia mógłbyś nadpisać zmiany, które ktoś inny wrzucił do repo w międzyczasie) - zrób git pull --rebase (to wciągnie zmiany z zewnętrznego repozytorium do Twojego repozytorium i "wyrówna" brancz na którym obecnie się znajdujesz).

0

w jednym projekcie git switch master działa super, a w drugim projekcie wyrzuca mi błąd:

Zrzut ekranu z 2022-12-17 16-16-34.png

1

Cóż, akurat ten komunikat brzmi całkiem czytelnie :-)

Usuń te pliki i spróbuj ponownie, a na przyszłość nie commituj plików w stylu .pyc do repozytorium (poszukaj za rzeczami w stylu python typical gitignore).

0

no właśnie mam dodane do .gitignore żeby ignorowalo te pliki a i tak mi dodaje. nie wiem czemu. Ale i tak mi pomogles super. Dziekuje

2

Jeśli najpierw dodałeś pliki do repozytorium za pomocą git add, a dopiero potem utworzyłeś .gitignore, to te dodane uprzednio pliki i tak zostaną w repozytorium (w myśl tego, że Git nie usuwa rzeczy sam z siebie) - musisz te ekstra pliki dopiero usunąć ręcznie (rm albo git rm) i zrobić commita.

0

Jak wpisuje git switch master to przerzuca mi do 6 od tyłu commita w tym 2 projekcie. Także to jest dawno nieaktualny comit. Jak ustawic zeby przerzucało na ten ostatni?

0

Zrób git fetch i pokaż git status.

0

Zrzut ekranu z 2022-12-17 16-48-17.png

0

Oki, i jak wpisujesz git switch master to co się pokazuje?

0

Zrzut ekranu z 2022-12-17 16-54-42.png

0

A ten tego, próbowałeś usuwać te pliki i ponowić git switch master?

0

Przerzuca mi na commita 6 od końca.

Zrzut ekranu z 2022-12-17 17-02-07.png

0

Hmm, skąd to przypuszczenie? (i skąd wiesz, że to akurat szósty od końca?)

0
Patryk27 napisał(a):

Hmm, skąd to przypuszczenie? (i skąd wiesz, że to akurat szósty od końca?)

bo sprawdzam w git log

0

I co tam widzisz konkretnie?

1

przerzuca mi na commit o nazwie "UPGRADE" po wpisaniu

git switch master

Zrzut ekranu z 2022-12-18 12-31-31.png

1

Ja to rozumiem tak, że w pewnym momencie przełączyłeś się niechcący na detached head state (tak jak pisał @Patryk27), pewnie jakiś zły checkout, albo jesteś w połowie rebase'a. Zacząłeś robić commity będąc w tym detached statcie, ale nie zdawałeś sobie z tego sprawy i potem nie mogłęś ich wypchnąć na mastera, dostałeś komunikat, ale niepoprawnie go zinterpretowałeś, i wrzuciło Ci Twój state na inny branch, Twoje commity nadal są w tym detached head state, a lokalny branch masz 6 commitów wstecz. Dodatkowo masz niescommitowane pliki, których być może chcesz lub nie chcesz (możliwe że zmiany w .gitignore się cofnęły i git już nie wie że one są ignored), i to uniemożliwia Ci robienie checkoutów, bo by się nadpisały.

Ja bym na Twoim miejscu zrobił tak:

git add . #dodaj wszystkie pliki jakie masz
git commit -m "WIP" # zcommituj wszystkie pliki jakie masz

git checkout -B temporary # zrob tymczasowy branch

git checkout master # wróć na lokalny master

git reset temporary --hard # ustaw lokalnego mastera na branch tymczasowy
git branch -d temporary # usuń brancz tymczasowy

Jeśli oczywiście dobrze zinterpretowałem co napisałeś. To wygląda tak jakbyś nie do końca wiedział co robisz.

0
hubertsuder napisał(a):

Jak używam git push to mam nastepujacy komunikat

Zrzut ekranu z 2022-12-17 15-58-50.png

Nie rób tego co tam jest napisane. Tam jest opisane, jak wypchnąć commit in detached state na remote'a, ale Ty nie chcesz tego robić. Ty chcesz wrzucić commity na brancha, tylko nie zdajesz sobie sprawy z tego że jesteś w detached state.

Jak widzisz taki komunikat to zauważ co jest w pierwszej linijce: fatal: Nie jesteś teraz na gałęzi. Na tym się skup - weź wdech, i zastanów się czemu nie jesteś na branchu. Powinieneś być, tak jak mówi @Patryk27 , powinieneś się przełączyć na branch, bo jesteś w detached state.

Ale oczywiście, jak się "po prostu" przełączysz, to stracisz te commity które zrobiłeś + możesz (i pewnie masz) jakieś niezacommitowane pliki. Nie wiem jak się znalazłeś w detached state, możliwe że jakiś nieudany merge albo jesteś w trakcie rebase'a. Nie wiem.

Jeśli nie jesteś w trakcie rebase'a, to myślę że powinieneś zrobić

git checkout -B master

Wtedy ustawisz swój lokalny branch na aktualny commit, i potem po prostu

git push
0
Riddle napisał(a):

Ja to rozumiem tak, że w pewnym momencie przełączyłeś się niechcący na detached head state (tak jak pisał @Patryk27), pewnie jakiś zły checkout, albo jesteś w połowie rebase'a. Zacząłeś robić commity będąc w tym detached statcie, ale nie zdawałeś sobie z tego sprawy i potem nie mogłęś ich wypchnąć na mastera, dostałeś komunikat, ale niepoprawnie go zinterpretowałeś, i wrzuciło Ci Twój state na inny branch, Twoje commity nadal są w tym detached head state, a lokalny branch masz 6 commitów wstecz. Dodatkowo masz niescommitowane pliki, których być może chcesz lub nie chcesz (możliwe że zmiany w .gitignore się cofnęły i git już nie wie że one są ignored), i to uniemożliwia Ci robienie checkoutów, bo by się nadpisały.

Ja bym na Twoim miejscu zrobił tak:

git add . #dodaj wszystkie pliki jakie masz
git commit -m "WIP" # zcommituj wszystkie pliki jakie masz

git checkout -B temporary # zrob tymczasowy branch

git checkout master # wróć na lokalny master

git reset temporary --hard # ustaw lokalnego mastera na branch tymczasowy
git branch -d temporary # usuń brancz tymczasowy

Jeśli oczywiście dobrze zinterpretowałem co napisałeś. To wygląda tak jakbyś nie do końca wiedział co robisz.

już naprawiłem. Jestem na galezi master i git push wypycha mi normalnie. Zrobilem to co powiedziales.

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