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??
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.
Jak używam git push to mam nastepujacy komunikat
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
wpisałem i mnie przerzuciło na master. Ale jak wpisuje git push to mam nastepujacy komunikat:
Dobra zrobiłem pull i teraz działa
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).
w jednym projekcie git switch master działa super, a w drugim projekcie wyrzuca mi błąd:
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
).
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
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.
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?
Zrób git fetch
i pokaż git status
.
Oki, i jak wpisujesz git switch master
to co się pokazuje?
A ten tego, próbowałeś usuwać te pliki i ponowić git switch master
?
Przerzuca mi na commita 6 od końca.
Hmm, skąd to przypuszczenie? (i skąd wiesz, że to akurat szósty od końca?)
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
I co tam widzisz konkretnie?
przerzuca mi na commit o nazwie "UPGRADE" po wpisaniu
git switch master
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.
hubertsuder napisał(a):
Jak używam git push to mam nastepujacy komunikat
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
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.