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 № 1Chociaż 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.