Mam zdalny serwer gitosis i lokalne repozytorium git i za każdym razem, gdy dokonam dużej zmiany w kodzie, wypchnę te zmiany również na ten serwer.
Ale dzisiaj stwierdzam, że chociaż mam pewne lokalne zmiany i zobowiązuję się do lokalnego repozytorium, po uruchomieniu git push origin master
mówi „Wszystko aktualne”, ale kiedy używam git clone
do pobierania plików na zdalnym serwerze, nie zawiera najnowszych zmian . I mam tylko jedną gałąź o nazwie „master” i jeden zdalny serwer o nazwie „origin”.
PS: To właśnie wyświetla git podczas uruchamiania ls-remote
, nie jestem pewien, czy to pomaga
$ git ls-remote origin
df80d0c64b8e2c160d3d9b106b30aee9540b6ece HEAD
df80d0c64b8e2c160d3d9b106b30aee9540b6ece refs/heads/master
$ git ls-remote .
49c2cb46b9e798247898afdb079e76e40c9f77ea HEAD
df80d0c64b8e2c160d3d9b106b30aee9540b6ece refs/heads/master
df80d0c64b8e2c160d3d9b106b30aee9540b6ece refs/remotes/origin/master
3a04c3ea9b81252b0626b760f0a7766b81652c0c refs/tags/stage3
commit
którego nie zauważyłem i próbowałem wypchnąć kodOdpowiedzi:
Czy przypadkiem pracujesz z odłączoną głową ?
Jak w:
wskazując, że twoje ostatnie zatwierdzenie nie jest szefem oddziału.
Ostrzeżenie :
git reset --hard
wykonaj następujące czynności : pamiętaj, aby użyćgit stash
najpierw, jeśli chcesz zapisać aktualnie zmodyfikowane pliki.Jak wspomniano na
git checkout
stronie manuala (moje podkreślenie):źródło
Step 1: git fetch origin git checkout -b "nodeAPI" "origin/nodeAPI" Step 2. Review the changes locally Step 3. Merge and fix conflicts git fetch origin git checkout "origin/master" git merge --no-ff "nodeAPI" Step 4. Push the result of the merge to GitLab git push origin "master"
Jestem dobry do ostatniego kroku. Ale teraz jestem tylko zdezorientowany, jak iść naprzód.git branch -f myBranch HEAD
a następnie sprawdź wymieniony oddział i wciśnij go. W twoim przypadkumyBranch
może byćmaster
tak, jakbyś był w trakcie łączenianodeAPI
.Err .. Jeśli jesteś git noob, czy na pewno masz go
git commit
wcześniejgit push
? Popełniłem ten błąd po raz pierwszy!źródło
git commit -a -m "your message goes here"
w moim przypadkugit add -A
,git diff --staged
, przewija się przez zmiany hmm patrząc bardzo dobrygit commit -m 'bam!'
,git push
Może naciskasz na nowy oddział lokalny?
Nowy oddział lokalny musi zostać jawnie przekazany:
Tylko jedna z tych rzeczy na temat git ... Klonujesz repozytorium, tworzysz gałąź, dokonujesz zmian, pchasz ... „Wszystko jest aktualne”. Rozumiem, dlaczego tak się dzieje, ale ten przepływ pracy jest wyjątkowo nieprzyjazny dla nowych użytkowników.
źródło
Mój problem polegał na tym, że mój oddział lokalny miał inną nazwę niż oddział zdalny. Byłem w stanie naciskać, wykonując następujące czynności:
$ git push origin local-branch-name:remote-branch-name
(Kredyt na https://penandpants.com/2013/02/07/git-pushing-to-a-remote-branch-with-a-different-name/ )
źródło
Inna sytuacja, o której należy pamiętać: Domyślnym stanem git jest to, że pracujesz w gałęzi „master”. I w wielu sytuacjach po prostu spędzasz czas jako główny działający oddział (chociaż niektórzy ludzie lubią robić inne rzeczy).
W każdym razie to tylko jedna gałąź. Tak więc sytuacja, do której mogę się dostać to:
Moja aktywna gałąź nie jest tak naprawdę gałęzią główną. ... Ale zwykle wykonuję polecenie:
git push
(i zrobiłem to wcześniejgit push origin master
, więc jest to skrót do tego).Więc zwykle wypycham gałąź master do wspólnego repo ... co jest prawdopodobnie dobrą, czystą rzeczą, w moim przypadku ...
Ale zapomniałem, że zmiany, nad którymi pracowałem, nie są jeszcze w gałęzi master !!!
Dlatego za każdym razem, gdy próbuję
git push
i widzę „Wszystko na bieżąco”, chcę krzyczeć, ale oczywiście to nie wina Gita! To jest moje.Zamiast tego łączę moją gałąź w mistrza, a następnie pcham i wszystko znów jest szczęśliwe.
źródło
git push
.Wyjaśnienie
Miałem ten sam błąd i spędziłem godziny próbując go rozgryźć. Nareszcie to znalazłem. Nie wiedziałem jednak, że takie wypychanie
git push origin branch-x
będzie próbowało szukać gałęzi x lokalnie, a następnie wypchnięcie do zdalnej gałęzi x.W moim przypadku miałem dwa odległe adresy URL. Zrobiłem kasę z gałęzi-x do gałęzi-y , próbując wypchnąć lokalnie z y do zdalnego x. Miałem wiadomość, że wszystko jest aktualne, co jest normalne, ponieważ przesuwałem do x drugiego zdalnego.
Krótko mówiąc, aby nie wpaść w tego rodzaju pułapki, musisz podać referencję źródłową i docelową:
Aktualizacja:
Jeśli musisz uruchamiać to polecenie za każdym razem, gdy wypychasz oddział, być może będziesz musiał ustawić upstream między oddziałem lokalnym i zdalnym za pomocą:
Lub
źródło
Zobacz odpowiedź VonC powyżej - potrzebowałem dodatkowego kroku:
Zrobiłem to, ale kiedy spróbowałem
git push remoterepo master
, powiedział: „błąd: nie udało się wypchnąć niektórych referencji. Aby zapobiec utracie historii, aktualizacje niezwiązane z przewijaniem do przodu zostały odrzucone, Scal zdalne zmiany (np.„ Git pull ”) przed pchanie ponownie. ”Więc zrobiłem „git pull remoterepo master” i znalazłem konflikt. Zrobiłem to
git reset --hard <commit-id>
ponownie, skopiowałem skonfliktowane pliki do folderu kopii zapasowej, zrobiłemgit pull remoterepo master
ponownie, skopiowałem pliki z powrotem do mojego projektu, zrobiłemgit commit
togit push remoterepo master
i tym razem zadziałało.Git przestał mówić „wszystko jest aktualne” - i przestał narzekać na „szybkie przewijanie”.
źródło
Miałem podobną sytuację; kiedy wprowadzałem zmiany i starałem się
git push origin master
, mówiłem, że wszystko jest aktualne.git add
Potem musiałem zmienić plikgit push origin master
. Od tego momentu zaczęło działać.źródło
git commit
dodać tego pliku przed wypchnięciem?Ze swojego statusu gita, prawdopodobnie masz inną sytuację niż moja.
Ale tak czy inaczej, oto co się ze mną stało. Napotkałem następujący błąd:
Bardziej pouczającym komunikatem jest to, że pilot się rozłączył. Okazało się, że jest to spowodowane przekroczeniem rozmiaru bufora postu http. Rozwiązaniem jest zwiększenie go o
git config http.postBuffer 524288000
źródło
Miałem dzisiaj ten problem i nie miało to nic wspólnego z żadną inną odpowiedzią. Oto, co zrobiłem i jak to naprawiłem:
Moje repozytorium zostało niedawno przeniesione, ale miałem lokalną kopię. Odgałęziłem moją lokalną gałąź „master” i wprowadziłem pewne zmiany - a potem przypomniałem sobie, że repozytorium zostało przeniesione. Kiedyś
git remote set-url origin https://<my_new_repository_url>
ustawiałem nowy adres URL, ale kiedy go wypychałem, po prostu mówiłem „Wszystko na bieżąco” zamiast wypychać moją nową gałąź do opanowania.Rozwiązałem problem, bazując na,
origin/master
a następnie wypychając z wyraźnymi nazwami gałęzi, takimi jak to:Mam nadzieję, że to pomoże każdemu, kto miał ten sam problem!
źródło
Bardzo rzadkie - ale nadal: w systemie Windows może się zdarzyć, że spakowane referencje mają gałąź z jedną literą (tj. Dev / mybranch), podczas gdy folder refs ma inną wielkość liter (tj. Dev / mybranch), gdy core.ignorecase jest ustawiony na true .
Rozwiązaniem jest ręczne usunięcie odpowiedniego wiersza z zapakowanych referencji . Nie znalazłem czystszego rozwiązania.
źródło
Sam na to wpadłem, kiedy połączyłem oddział na Github i nadal rozwijałem się w nim lokalnie. Moja poprawka była trochę inna niż inne, które zostały zasugerowane.
Najpierw otworzyłem nowy oddział lokalny ze starego, lokalnego oddziału (którego nie mogłem wypchnąć). Następnie wypchnąłem nowy oddział lokalny na serwer źródłowy (Github). To znaczy
Dzięki temu zmiany pojawiały się na Githubie, choć w newlocalbranch zamiast oldlocalbranch.
źródło
W moim przypadku miałem 2 zdalne repo.
Oba repozytorium było takie samo. Tylko jedna była
https
innassh
. Usunięcie niechcianego (w moim przypadkussh
. Ponieważ użyłem,https
ponieważssh
nie działało!) Naprawiło problem.źródło
Mój błąd był inny niż wszystko do tej pory wspomniane. Jeśli nie masz pojęcia, dlaczego miałbyś odłączoną głowę, prawdopodobnie nie masz. Pracowałem na autopilocie z
git commit
agit push
, i nie czytać wyjście zgit commit
. Okazuje się, że był to komunikat o błędzie, ponieważ zapomniałem -am.Naprawiono to, umieszczając miejsce, w
-am
którym zwykle robię:źródło
Napotkałem ten sam problem. Ponieważ nie dodałem zmian w obszarze przeciwności. I bezpośrednio próbowałem przekazać kod do zdalnego repozytorium za pomocą polecenia:
git push origin master
I pokazuje wiadomość
Everything up-to-date
.Aby rozwiązać ten problem, spróbuj wykonać następujące czynności
git add .
git commit -m "Bug Fixed"
git push -u origin master
źródło
Sprawdź, czy nie wygłuszyłeś swojego zdalnego adresu URL.
Chciałem tylko wspomnieć, że wpadłem na to po włączeniu Git jako CVS w lokalnej konfiguracji kompilacji Jenkins. Wygląda na to, że Jenkins sprawdził ostatnie zatwierdzenie gałęzi, którą mu podałem, a także zresetował mojego pilota, aby odpowiadał ścieżkom, które podałem mu do repozytorium. Musiałem ponownie sprawdzić moją gałąź funkcji i naprawić mój zdalny adres źródłowy za pomocą „git remote set-url”. Nie idź wskazując narzędzia do kompilacji do katalogu roboczego, w przeciwnym razie będziesz miał zły czas. Mój pilot był ustawiony na ścieżkę pliku do mojego katalogu roboczego, więc oczywiście zgłaszał wszystko na bieżąco, gdy próbowałem wypchnąć zmiany z tym samym źródłem i miejscem docelowym.
źródło
Inną możliwością jest nazwanie katalogu w pliku .gitignore, który został wykluczony. Tak więc nowe zatwierdzenia nie zostaną wypchnięte. Zdarzyło mi się, że nazwałem katalog, aby zignorować „szukaj”, ale był to także katalog w moim drzewie źródłowym.
źródło
Znalazłem szybki sposób. Przejdź do folderu .git, otwórz
HEAD
plik i zmień gałąź, którą byłeś z powrotem, na master. Np. Ref:refs/heads/master
źródło
refs/heads/master
złamanie mojego repozytorium. Ale ustawienie go do tego, co uważa się za głowę commit dał się następujący komunikat:Warning: you are leaving 1 commit behind, not connected to any of your branches
. Byłem w stanie przejąć zatwierdzenie do nowego oddziału i scalić go z powrotem do mistrza.Miałem ten sam problem. W moim przypadku było to spowodowane nazwami tego samego pilota. Stworzyło to standardowe „pochodzenie”, ale od dawna używam „github” jako mojego pilota, więc to też tam było. Gdy tylko usunąłem pilota „origin”, błąd zniknął.
źródło
Tak się stało (zmiany w moim dzienniku git nie były w GitHub, chociaż git powiedział, że wszystko jest aktualne) i jestem pewien, że problemem był Github. Nie dostałem żadnych komunikatów o błędach w git, ale GitHub miał błędy statusu i moje zatwierdzenia były tam kilka godzin później.
https://status.github.com/messages
Komunikaty o stanie GitHub to:
źródło
Kolejny bardzo prosty, ale noobisty błąd: po prostu zapomniałem dodać
-m
modyfikator wiadomości do mojego zatwierdzenia. Więc napisałem:Zamiast poprawnego:
UWAGA: NIE powoduje żadnych błędów! Ale nie będzie w stanie przeforsować swoje rewizje i zawsze
Everything up to date
zamiastźródło
tutaj moje rozwiązanie różni się od powyższego. nie zorientowałem się, jak to się dzieje, ale naprawiłem to. trochę niespodziewanie.
teraz nadchodzi sposób:
polecenie, które działa dla mnie to
$git push origin HEAD:use_local_cache
(Mam nadzieję, że jak najszybciej wyjdziecie z tego problemu)
źródło
Wiem, że jest super stary, ale w moim przypadku naprawiłem go dość szybko.
Otrzymywałem ten sam błąd, będąc jednym zatwierdzeniem przed
master
. Potem znalazłem aktualny post przepełnienia stosu. Jednak zanim przejdziemy do sugerowanych pomysłów, postanowiłem po prostu dokonać nowego zatwierdzenia i spróbować ponownie z funkcją push to origin i zadziałało to płynnie.Nie wiem dlaczego, ale może jest to przydatne dla kogoś innego.
źródło
Inną możliwością jest to, że masz zatwierdzenia, które nie wpływają na katalog, który wypychasz. Więc w moim przypadku miałem taką strukturę
I zobowiązałem się do modyfikacji
README.md
, a potem uruchomiłemgit subtree push --prefix client heroku-client master
i dostałem wiadomośćEverything up-to-date
źródło
Pracowałem z Jupyter-Notebook, gdy napotkałem ten zwodniczy błąd.
Nie byłem w stanie rozwiązać za pomocą powyższych rozwiązań, ponieważ nie miałem odłączonej głowy ani nie miałem różnych nazw dla mojego lokalnego i zdalnego repozytorium.
Ale moje pliki były nieco większe niż 1 MB, a największe były prawie ~ 2 MB . Zmniejszyłem rozmiar pliku za pomocą Jak zmniejszyć rozmiar pliku mojego iPython notebooka?technika. Pomogło zmniejszyć rozmiar mojego pliku, usuwając dane wyjściowe. Byłem w stanie wypchnąć kod, ponieważ odtąd zwiększył mój rozmiar pliku w KB.
źródło