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 fetchlub 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 fetchlub 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-runnic się nie pojawia?
--all?
git pulljest 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 -unopowie 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 -vz 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 -unorozwiązałem to. git fetch --dry-runnie dawał wyjścia nawet w przypadkach, gdy lokalny był za zdalnym.
git remote -v updatejest odpowiedzią dla mnie.
możesz użyć, git status -unoaby sprawdzić, czy Twój lokalny oddział jest na bieżąco z oryginalnym.
git remote update ; git status -unozałatwiło sprawę! Nie git fetch --dry-rundawało wyjścia, kiedy się tego spodziewałem (i git pullwyciągnęłoby rzeczy).
Niezupełnie - ale nie widzę, jak git fetchby 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/branchgo jako porównania, które możesz zobaczyć, git show-branch *branchaby 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 fetchzanim 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 mergelub 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 fetchlub 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 -unoto działa i można go również użyć, git show-branch *masteraby 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 statusinformuje 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