/ / Git - porównaj lokalne i zdalne bez pobierania? - git, porównaj

Git - porównaj lokalnie i zdalnie bez pobierania najpierw? - git, porównaj

Szukałem i nie znalazłem odpowiedzi na to pytanie.

Mam aplikację działającą na Heroku. Z mojej lokalnej maszyny zazwyczaj implementuję i tylko:

git add .
git commit -m "whatever change, I know I can add and commit at the same time..."
git push <the-heroku-repo>

Następnie idzie w górę i gałąź master w aplikacji Heroku jest aktualizowana. Jak na razie dobrze.

Teraz. Chcę mieć inną maszynę, która automatycznie zacznie pobierać z repozytorium Heroku i aktualizować się.

Robię to z:

git clone <the-heroku-repo>

Dzięki temu otrzymuję aplikację i widzę w niej konfigurację git:

core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
remote.origin.url=git@heroku.com:theapp.git
branch.master.remote=origin
branch.master.merge=refs/heads/master

Aby zaktualizować nowe repo, mogę zrobić tylko:

git pull origin

Albo mogę pobrać i scalić:

git fetch origin
git merge origin/master

MOJE PYTANIE

Pomiędzy powyższym pobieraniem i scalaniem mogę sprawdzić, jakie są zmiany, wykonując:

git log -p master..origin/master

Czy istnieje sposób na znalezienie różnic międzylokalna gałąź główna i najnowsza wersja zdalnego repozytorium Heroku bez pobierania? Wystarczy porównać lokalne i zdalne i zobaczyć zmiany. Po prostu nie mogę znaleźć właściwej drogi.

Dzięki.

Odpowiedzi:

14 dla odpowiedzi № 1

Chociaż możesz uzyskać pewne podsumowujące informacje o gałęziach w origin repozytorium za pomocą:

git remote show origin

... musisz pobrać gałęzie origin do swojego repozytorium, aby je porównać. Co to jest git fetch robi. Kiedy uciekasz git fetch origin, domyślnie zaktualizuje tylko tak zwane „gałęzie zdalnego śledzenia”, takie jak origin/master. Przechowują tylko tam, gdzie znajdował się odpowiedni oddział origin przy ostatnim pobraniu. Na wszystkie lokalne oddziały, nad którymi pracowałeś, nie ma wpływu git fetch. Więc to bezpieczne:

git fetch origin
git log -p master..origin/master

... a następnie, jeśli jesteś zadowolony z tego, możesz połączyć się z lub ponownie bazować na origin/master.


Zachęcam was, abyście nie martwili się o zasoby (miejsce na dysku lub przepustowość) zaangażowane w git fetch origin dowództwo. git wydajnie wysyła tylko te obiekty, które są niezbędne do ukończenia aktualizowanych gałęzi zdalnego śledzenia, i jeśli nie masz niezwykle dużych plików przechowywanych z kodem źródłowym, to nie powinno to mieć większego znaczenia. często przydatne jest posiadanie pełnej historii oddziałów z innego repozytorium, nawet jeśli nie planujesz ich używać, na przykład, abyś mógł sprawdzić tę historię rozwoju.