Edytowałem moje repozytoria GIT za pośrednictwem Git Online. Po próbie wypchnięcia zmian w kodzie lokalnym pojawił się błąd:
Git push failed, To prevent from losing history, non-fast forward updates were rejected.
Jak mogę to naprawić?
Edytowałem moje repozytoria GIT za pośrednictwem Git Online. Po próbie wypchnięcia zmian w kodzie lokalnym pojawił się błąd:
Git push failed, To prevent from losing history, non-fast forward updates were rejected.
Jak mogę to naprawić?
Odpowiedzi:
Najpierw ściągnij zmiany:
git pull origin branch_name
git pull
:? Pilot jest równa origin
, więc to rzeczywiście działa: git pull origin
. Czy nie powinien zaktualizować wszystkich oddziałów?
Dodaj --force do swojego wiersza poleceń, jeśli jesteś pewien, że chcesz wcisnąć. Np. Użyj git push origin --force
(polecam linię poleceń, ponieważ znajdziesz znacznie więcej wsparcia od innych użytkowników z linią poleceń. Również może to nie być możliwe w przypadku SmartGit.) Więcej informacji znajdziesz na tej stronie: http://help.github.com/ piloty /
--force
Jeśli jesteś jedyną osobą korzystającą z tej gałęzi, możesz skorzystać z niej . Jednak powoduje problemy podczas udostępniania gałęzi innym programistom.
Przed wypchnięciem wykonaj polecenie git pull z opcją rebase. Spowoduje to pobranie zmian, które wprowadziłeś online (w swoim źródle) i zastosowanie ich lokalnie, a następnie dodanie lokalnych zmian.
git pull --rebase
Teraz możesz przejść do zdalnego
git push
Aby uzyskać więcej informacji, zapoznaj się z omówieniem rebase Git i rozdziałem 3.6 Rozgałęzienie Git - Rebasing .
git pull --rebase
kończy sięThere is no tracking information for the current branch. Please specify which branch you want to rebase against.
Napotkałem ten sam błąd, po prostu dodaj „--force” do polecenia, działa
git push origin master --force
--force
może być pomocne.
Miałem ten sam problem.
Powodem było to, że mój lokalny oddział w jakiś sposób stracił śledzenie do zdalnego odpowiednika.
Po
git branch branch_name --set-upstream-to=origin/branch_name
git pull
i rozwiązując łączące się konflikty, mogłem naciskać.
Możesz dodać --force-with-lease do polecenia, będzie działać.
git push --force-with-lease
--force jest destrukcyjny, ponieważ bezwarunkowo nadpisuje zdalne repozytorium tym, co masz lokalnie. Ale --force-with-lease zapewnia, że nie nadpisujesz pracy innych osób.
Zobacz więcej informacji tutaj .
(Jedno) rozwiązanie dla Netbeans 7.1: Spróbuj wyciągnąć. To prawdopodobnie również się nie powiedzie. Teraz spójrz na dzienniki (zwykle są one teraz wyświetlane w IDE). Jest jeden lub więcej wersów:
„Pobieranie nie powiodło się z powodu tego pliku:”
Przeszukaj ten plik, usuń go (wcześniej wykonaj kopię zapasową). Zwykle jest to plik .gitignore, więc nie usuniesz kodu. Ponów pchnięcie. Teraz wszystko powinno działać dobrze.
Korzystanie z --rebase
opcji zadziałało dla mnie.
git pull <remote> <branch> --rebase
Następnie przejdź do repozytorium.
git push <remote> <branch>
Na przykład
git pull origin master --rebase
git push origin master
Mam ten sam problem. Rozwiązałem z
git checkout <name branch>
git pull origin <name branch>
git push origin <name branch>
checkout
nadpisze te zmiany lub przynajmniej nie uwzględni ich w trybie push.
Napotkał ten sam problem, aby go rozwiązać, uruchom następujące git
polecenia.
git pull {url} --rebase
git push --set-upstream {url} master
Najpierw musisz utworzyć repozytorium na githubie.
Czasami, gdy pociągasz za tyłek, GŁOWA odłącza się. Możesz to sprawdzić wpisując polecenie:
git branch
(GŁOWA odłączona od 8790704)
mistrz
rozwijać się
Lepiej jest przenieść się do swojej gałęzi i ponownie wyciągnąć rękę z odpowiedniego oddziału.
git checkout develop
git pull origin develop
git push origin develop