Czy to w ogóle możliwe?
Zasadniczo istnieje zdalne repozytorium, z którego pobieram za pomocą:
git pull
Teraz chciałbym wyświetlić podgląd tego, co zmieniłoby to ściąganie (różnicę) bez dotykania czegokolwiek po mojej stronie. Powodem jest to, że coś, co wyciągam, może nie być „dobre” i chcę, aby ktoś inny to naprawił, zanim moje repozytorium stanie się „brudne”.
git
version-control
Milan Babuškov
źródło
źródło
Odpowiedzi:
Po wykonaniu a
git fetch
, wykonaj a,git log HEAD..origin/master
aby wyświetlić wpisy dziennika między ostatnim wspólnym zatwierdzeniem a gałęzią główną źródła. Aby wyświetlić różnice, użyj albo,git log -p HEAD..origin/master
aby wyświetlić każdą łatkę, lubgit diff HEAD...origin/master
(trzy kropki, a nie dwie), aby pokazać pojedynczą różnicę.Tam zazwyczaj nie ma potrzeby, aby cofnąć sprowadzić, bo robi pobrać aktualizacje tylko zdalnych oddziałów i żaden z twoich oddziałów. Jeśli nie jesteś przygotowany do wykonania operacji ściągania i scalania we wszystkich zdalnych zatwierdzeniach, możesz użyć,
git cherry-pick
aby zaakceptować tylko określone zdalne zatwierdzenia, które chcesz. Później, kiedy będziesz gotowy, aby uzyskać wszystko,git pull
scalenie z resztą zatwierdzeń.Aktualizacja: Nie jestem całkowicie pewien, dlaczego chcesz uniknąć korzystania z git fetch. Wszystko, co robi git fetch, to aktualizowanie lokalnej kopii zdalnych gałęzi. Ta lokalna kopia nie ma nic wspólnego z żadnym z twoich oddziałów i nie ma nic wspólnego z niezatwierdzonymi lokalnymi zmianami. Słyszałem o ludziach, którzy uruchamiają git fetch w pracy crona, ponieważ jest to tak bezpieczne. (Zwykle jednak nie zalecałbym tego.)
źródło
git diff ...@{u}
jest taki sam, jakgit diff HEAD...origin/master
gdyby pochodzenie / mistrz był odgałęzieniem w górę rzekiMyślę, że szukasz git fetch .
Spowoduje to pobranie zmian i obiektów bez przypisywania ich do indeksu lokalnego repozytorium.
Można je później połączyć za pomocą git merge .
Strona man
Edycja: dalsze wyjaśnienia
Prosto z Git- SVN Crash Course linku
Czytanie strony podręcznika da ci najlepsze zrozumienie opcji i sposobu korzystania z nich.
Próbuję to zrobić tylko za pomocą przykładów i pamięci. Obecnie nie mam pola do przetestowania. Powinieneś spojrzeć na:
Pobieranie można cofnąć za pomocą git reset --hard ( link ), jednak wszystkie niezatwierdzone zmiany w drzewie zostaną utracone, a także zmiany, które pobrałeś.
źródło
git reset --soft
czy--mixed
? Sprawdź stronę podręcznika.Możesz pobrać ze zdalnego repozytorium, zobaczyć różnice, a następnie pobrać lub scalić.
To jest przykład zdalnej repozytorium o nazwie
origin
i gałęzi o nazwiemaster
śledzącej zdalną gałąźorigin/master
:źródło
Stworzyłem niestandardowy alias git, aby to dla mnie zrobić:
dzięki temu możesz to zrobić:
Zapewni to przyjemny i łatwy sposób na podgląd zmian przed wykonaniem
merge
.źródło
Używam tych dwóch poleceń i widzę pliki do zmiany.
Najpierw uruchamiając git fetch , daje wynik taki jak ten (część wyniku):
Ta operacja daje nam dwa identyfikatory zatwierdzeń, pierwszy to stary, a drugi będzie nowy.
Następnie porównaj te dwa zatwierdzenia za pomocą git diff
To polecenie wyświetli listę plików, które zostaną zaktualizowane:
Na przykład aplikacja / kontroler / xxxx.php i aplikacja / widok / rrrr.php zostaną zaktualizowane.
Porównanie dwóch zatwierdzeń za pomocą git diff drukuje wszystkie zaktualizowane pliki ze zmienionymi liniami, ale z grep przeszukuje i pobiera tylko linie zawierające diff --git z wyjścia.
źródło
Mogę spóźnić się na przyjęcie, ale to mnie zbyt długo męczyło. Z mojego doświadczenia wynika, że wolę sprawdzić, które zmiany są w toku, niż zaktualizować kopię roboczą i zająć się tymi zmianami.
To idzie w
~/.gitconfig
pliku:Pobiera bieżącą gałąź, a następnie robi różnicę między kopią roboczą a tą pobraną gałęzią. Więc powinieneś zobaczyć tylko zmiany, które nastąpią
git pull
.źródło
HEAD..@{u}
? Jest to prostsze i nie wymaga, aby pilot nazywał się „origin” ani aby twoja gałąź miała taką samą nazwę jak na pilocie.git pull
jeśli nie podoba ci się to, co robi ... więc nie jestem pewien, jaki jest przypadek użycia tego.git pull
później. Myślę też, że o to właśnie chodziło w op.Jeśli nie chcesz, aby git-fetch aktualizował lokalny plik .git, po prostu skopiuj lokalne repozytorium do katalogu tymczasowego i tam ściągnij. Oto krótka ręka:
Dawny.:
źródło
Co powiesz na klonowanie repozytorium w innym miejscu i robienie logów git zarówno na prawdziwej kasie, jak i na świeżym klonie, aby sprawdzić, czy masz to samo.
źródło