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
?
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
?
Odpowiedzi:
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 a git fetch && git merge
. Jeśli w dowolnym momencie uruchomiłeś pobieranie bez rozszerzenia --dry-run
, oznacza to, że już pobrałeś rzeczy lokalnie.
git remote show origin
Wynik:
HEAD branch: master
Remote branch:
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (local out of date) <-------
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:W oddziale DEV
Twoja gałąź jest za 'origin / DEV' o 7 zatwierdzeń i może być przewijana do przodu.
(użyj „git pull”, aby zaktualizować swój lokalny oddział)
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ń.
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.
git remote update ; git status -uno
załatwiło sprawę! Nie git fetch --dry-run
dawało wyjścia, kiedy się tego spodziewałem (i git 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.
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
Musisz wydać dwa polecenia:
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
lub git 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.
Jest to niemożliwe bez użycia git fetch
lub git 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”?
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