Czy istnieje sposób, aby sprawdzić, co zostanie popchnięte, gdybym wykonał git push
polecenie?
To, co wyobrażam, to coś w rodzaju zakładki „Zmieniono pliki” funkcji „żądania ściągnięcia” Githuba. Kiedy wysyłam żądanie ściągnięcia, mogę sprawdzić, co zostanie pobrane, jeśli zaakceptują moje żądanie ściągnięcia:
Wiersz poleceń jest OK, ale wolałbym jakiś GUI (jak zrzut ekranu powyżej).
Odpowiedzi:
Aby wypchnąć listę plików, uruchom:
przykład:
Aby kod różnicowy plików, które mają zostać wypchnięte, uruchom:
Aby zobaczyć pełne ścieżki plików, które ulegną zmianie, uruchom:
Jeśli chcesz zobaczyć te różnice w GUI, musisz skonfigurować git. Zobacz Jak wyświetlić wyjście „git diff” za pomocą programu do wizualnego porównywania? .
źródło
HEAD
, a nie indeks, względem origin (git diff origin/master HEAD
). Zróżnicowanie indeksu da te same wyniki wtedy i tylko wtedy, gdy nie wprowadzono żadnych zmian dla zatwierdzenia. Jeśli wprowadziłeś zmiany, zostaną one uwzględnione w pliku różnic, ale najwyraźniej nie zostaną wprowadzone, ponieważ nie zostały jeszcze zatwierdzone.git diff --stat origin/master HEAD
były poprawne.git diff --cached [remote/branch]
robi lewę :)Zawsze istnieje suchobieg:
Zrobi wszystko oprócz faktycznego wysyłania danych.
Jeśli chcesz uzyskać bardziej graficzny widok, masz wiele opcji.
Tig i skrypt gitk, które są dostarczane z git, wyświetlają zarówno bieżącą gałąź twojej lokalnej kopii, jak i gałąź pilota lub źródła.
Zatem wszelkie zatwierdzenia dokonane po źródle są zatwierdzeniami, które zostaną wypchnięte.
Otwórz gitk z powłoki, gdy jesteś w gałęzi, którą chcesz wcisnąć, pisząc
gitk&
, a następnie, aby zobaczyć różnicę między tym, co znajduje się na pilocie, a tym, co zamierzasz wcisnąć do pilota, wybierz lokalne nieprzypisane zatwierdzenie i kliknij prawym przyciskiem myszy na pilocie i wybierz „Zróżnicuj to -> wybrane”:źródło
git diff --stat HEAD origin/master
lubgit diff HEAD origin/master
. Ważna jest HEAD , w przeciwnym razie wprowadzisz nieprzewidziane zmiany w swoim pliku różnicowymgit push --dry-run
polega na tym, że nadal wymaga uprawnień do zapisu na pilocie. Więc jeśli masz klon bez pozwolenia na przesyłanie danych w górę, ale chcesz zobaczyć, jakie są Twoje lokalne niedomówione zmiany,--dry-run
nie zrobisz tego.branch
iorigin/branch
, pójdę z odpowiedzią Ionuţ G. Stana, ponieważ w rzeczywistości nie wymaga podłączenia do zdalnego repo. Może to być dobre lub złe, w zależności od potrzeb.Aby po prostu wymienić zatwierdzenia oczekujące na wypchnięcie: ( to ten, który zapamiętasz )
źródło
git cherry -v heroku/remote
na wypadek, gdybyś trzymał kod w więcej niż jednym pilocie.Prawdopodobnie chcesz biec
git difftool origin/master...
. powinien pokazać zunifikowany plik różnicowy tego, co znajduje się w bieżącej gałęzi, którego jeszcze nie ma w gałęzi źródłowej / głównej i wyświetlić go w wybranym narzędziu graficznym. Aby być najbardziej aktualnym, uruchomgit fetch
najpierw.źródło
git difftool -d origin/master
, Mam ustawiony difftool do połączenia, więc działa świetnie, dzięki!git difftool -d
jest o wiele lepszy, dzięki Aquarius Power. Jedynym problemem jest to, że nie wykrywa przeniesionych plików i pokazuje je jako usunięte i dodane zamiast tego.Jednym ze sposobów porównania lokalnej wersji przed wypchnięciem jej na zdalne repozytorium (rodzaj wypychania w suchym biegu):
Użyj TortoiseGit:
Kliknij prawym przyciskiem myszy projekt folderu głównego> TortoiseGit> Zróżnicuj z poprzednią wersją>
dla wersji 2 wybierz
refs/remotes/origin/master
źródło
Spróbuj
git diff origin/master..master
(zakładając, żeorigin/master
to twój upstream). W przeciwieństwie dogit push --dry-run
tego nadal działa, nawet jeśli nie masz uprawnień do zapisu na serwerze.źródło
Użyj
git gui
, tam możesz zobaczyć listę zmian w twoim rzeczywistym zatwierdzeniu. Możesz także użyć programu,gitk
który zapewnia łatwy interfejs do rejestrowania wpisów. Wystarczy porównaćremotes/...
imaster
zobaczyć, co zostanie popchnięte. Zapewnia interfejs podobny do zrzutu ekranu.Oba programy są zawarte w git.
źródło
gitk --all
otrzymujesz pełną listę wszystkich komentarzy. Teraz możesz porównać rzeczywisty stan swojej gałęziAby zobaczyć, które pliki zostały zmienione i zobaczyć rzeczywiste zmiany kodu w porównaniu z
master
gałęzią, której możesz użyć:UWAGA : Jeśli zdarzy ci się użyć któregoś z IDE firmy Intellij, możesz kliknąć prawym przyciskiem myszy swój projekt najwyższego poziomu, wybrać Git > Porównaj z gałęzią > i wybrać żądane źródło, np
origin/master
. W drzewie plików, które się pojawi, możesz dwukrotnie kliknąć pliki, aby zobaczyć różnicę wizualną. W przeciwieństwie do powyższej opcji wiersza polecenia, możesz edytować lokalne wersje z okna różnic.źródło
Możesz wyświetlić listę zatwierdzeń według:
A następnie porównaj z następującą komendą, gdzie liczba ^ jest równa liczbie zatwierdzeń (w przykładzie jej 2 zatwierdzenia):
źródło
Jeśli używasz Mac OS X, polecam Ci Tower, to wspaniały program, który sprawił, że praca z Git była dla mnie przyjemnością. Teraz muszę już pamiętać polecenia terminala i oferuje świetny GUI do przeglądania, śledzenia i rozwiązywania różnic w plikach.
I nie, nie jestem z nimi związany, po prostu korzystam z ich oprogramowania i bardzo mi się podoba.
http://www.git-tower.com/
źródło
Żeby dodać moje dwa centy ... Chciałem to zaimplementować, uruchamiając zadania w potoku gitlab na runnerie gitlab. Najlepszym sposobem na to było użycie tego skryptu:
Również w moim przypadku chciałem filtrować pliki według rozszerzenia, aby to osiągnąć, użyłem:
Potem możesz na przykład przesłać tę listę gdzie indziej, być może linijkę;)
Mam nadzieję, że to komuś pomoże.
źródło
źródło
Po
git commit -m "{your commit message}"
tym otrzymasz hash zatwierdzenia przed wypchnięciem. Aby zobaczyć, co zamierzasz przekazaćgit
, uruchom następujące polecenie:na przykład:
git diff origin/master c0e06d2
źródło