Chciałbym wiedzieć, czy moje lokalne repozytorium jest aktualne (a jeśli nie, najlepiej chciałbym zobaczyć zmiany).
Jak mogłem to sprawdzić bez robienia git fetch
lub git pull
?
Spróbuj git fetch --dry-run
Instrukcja ( git help fetch
) mówi:
--dry-run
Show what would be done, without making any changes.
git fetch --dry-run
nic się nie pojawia?--all
?git pull
jest w przybliżeniu odpowiednikiem agit fetch && git merge
. Jeśli w dowolnym momencie uruchomiłeś pobieranie bez rozszerzenia--dry-run
, oznacza to, że już pobrałeś rzeczy lokalnie.Wynik:
źródło
Pierwsze użycie
git remote update
, aby zaktualizować pilota. Następnie możesz zrobić jedną z kilku rzeczy, na przykład:git status -uno
powie Ci, czy śledzona gałąź jest przed, z tyłu, czy też się rozeszła. Jeśli nic nie mówi, lokalne i zdalne są takie same. Przykładowy wynik:git show-branch *master
pokaże zmiany we wszystkich gałęziach, których nazwy kończą się na „master” (np. master i origin / master).Jeśli używasz
-v
z git remote update (git remote -v update
), możesz zobaczyć, które gałęzie zostały zaktualizowane, więc tak naprawdę nie potrzebujesz żadnych dalszych poleceń.źródło
git remote update ; git status -uno
rozwiązałem to.git fetch --dry-run
nie dawał wyjścia nawet w przypadkach, gdy lokalny był za zdalnym.git remote -v update
jest odpowiedzią dla mnie.możesz użyć,
git status -uno
aby sprawdzić, czy Twój lokalny oddział jest na bieżąco z oryginalnym.źródło
git remote update ; git status -uno
załatwiło sprawę! Niegit fetch --dry-run
dawało wyjścia, kiedy się tego spodziewałem (igit pull
wyciągnęłoby rzeczy).Niezupełnie - ale nie widzę, jak
git fetch
by to zaszkodziło, ponieważ nie zmieni to żadnego z twoich lokalnych oddziałów.źródło
Inną alternatywą jest wyświetlenie statusu zdalnego oddziału, używając
git show-branch remote/branch
go jako porównania, które możesz zobaczyć,git show-branch *branch
aby zobaczyć gałąź we wszystkich pilotach, a także w repozytorium! sprawdź tę odpowiedź, aby uzyskać więcej informacji https://stackoverflow.com/a/3278427/2711378źródło
Musisz wydać dwa polecenia:
źródło
Musisz uruchomić,
git fetch
zanim będziesz mógł porównać lokalne repozytorium z plikami na zdalnym serwerze.To polecenie aktualizuje tylko twoje gałęzie zdalnego śledzenia i nie wpłynie na twoje drzewo robocze, dopóki nie zadzwonisz
git merge
lubgit pull
.Aby zobaczyć różnicę między lokalnym oddziałem a zdalnym oddziałem śledzenia po pobraniu, możesz użyć git diff lub git cherry, jak wyjaśniono tutaj.
źródło
Jeśli użyjesz
otrzymasz informację, czy jest aktualny. W zasadzie wystarczy dodać opcję „gadatliwości” do podanej wcześniej odpowiedzi.
źródło
Jest to niemożliwe bez użycia
git fetch
lubgit pull
. Skąd możesz wiedzieć, czy repozytorium jest „aktualne”, bez konieczności przechodzenia do repozytorium zdalnego, aby sprawdzić, co w ogóle oznacza „aktualne”?źródło
git pull
, których PO wyraźnie zabrania w swoim pytaniu.git status -uno
to działa i można go również użyć,git show-branch *master
aby zobaczyć stan wszystkich gałęzi głównych! Czy nadal mówisz, że to niemożliwe? Możesz zobaczyć status dowolnego oddziału, o ile masz dostęp do pilota!git status
informuje tylko o statusie lokalnych referencji , nie informuje, czy lokalne referencje są aktualne z zdalnymi referencjami. Ponownie: po prostu logicznie niemożliwe jest poznanie stanu zdalnego repozytorium bez uzyskania stanu zdalnego repozytorium. Kropka. To tylko podstawowe prawa czasoprzestrzeni.próbowałem sformatować moją odpowiedź, ale nie udało mi się. Zespół stackoverflow, dlaczego publikowanie odpowiedzi jest takie trudne.
mimo wszystko,
odpowiedź:
git pobiera
status git pochodzenia (zobaczysz wynik typu „Twoja gałąź jest za 'origin / master' przez 9 zatwierdzeń”),
aby zaktualizować do zdalnych zmian: git pull
źródło