Odpowiedzi:
Podaj ścieżkę (w tym przypadku myfolder) i uruchom:
git diff myfolder/
git diff -- myfolderaby zminimalizować niejednoznaczność w git. Ogólna notacja dla git diff (i wielu poleceń git) jest taka, git diff [commit-ish] -- [path]że commit-ish domyślnie przyjmuje wartość HEAD (gdzie jesteś teraz) i [path]domyślnie jest to katalog główny git, ale może być dowolną wartością w stosunku do twojego bieżącego katalogu. Bez --git będzie odgadnąć, co masz na myśli, [commit-ish]albo [path]. W niektórych przypadkach powoduje to, że git mówi, że zapis jest „niejednoznaczny”. Jeżeli dobrze pamiętam.
git diff master..develop myfolder/rozróżnić, jak powiedział @CrandellWS w komentarzu do pierwotnego pytania. Status Git pokaże zmiany, jeśli tego właśnie szukasz.
Jeśli porównujesz różne gałęzie, musisz użyć, --aby oddzielić wersję Git od ścieżki systemu plików. Na przykład z dwoma lokalnymi oddziałami masteri bryan-working:
$ git diff master -- AFolderOfCode/ bryan-working -- AFolderOfCode/
Lub z lokalnego oddziału do zdalnego:
$ git diff master -- AFolderOfCode/ origin/master -- AFolderOfCode/
Powinieneś mieć nawyk przeglądania dokumentacji takich rzeczy. Jest to bardzo przydatne i bardzo szybko poprawi twoje umiejętności. Oto odpowiedni fragment, kiedy to zrobiszgit help diff
git diff [options] [--no-index] [--] <path> <path>
Te dwa elementy <path>są potrzebne, aby zmienić te katalogi.
Dodaj Beyond Compare jako narzędzie difftool w Git i dodaj alias dla diffdir jako:
git config --global alias.diffdir = "difftool --dir-diff --tool=bc3 --no-prompt"
Pobierz gitdiff jako:
git diffdir 4bc7ba80edf6 7f566710c7
Źródła: Porównaj całe katalogi w git difftool + Beyond Compare
git config --global alias.diffdir = "difftool --dir-diff --tool=bc3 --no-prompt"zamiast tego
--no-symlinksopcję, aby polecenie brzmiałogit difftool --dir-diff --no-symlinks
Nie tylko możesz dodać ścieżkę, ale możesz dodać, git diff --relativeaby uzyskać wynik względem tego folderu.
git -C a/folder diff --relative
A dzięki Git 2.28 (Q3 2020) polecenia z rodziny „ diff” nauczyły się honorować diff.relativezmienną konfiguracyjną „ ”.
Zobacz commit c28ded8 (22 maja 2020) autorstwa Laurent Arnoud ( spk) .
(Scalenie przez Junio C Hamano - gitster- w zatwierdzeniu e34df9a , 02 czerwca 2020)
diff: dodaj opcję konfiguracjirelativePodpisane przez: Laurent Arnoud
Potwierdzone przez: Đoàn Trần Công DanhOpcja
diff.relativelogiczna ustawiona natruepokazuje tylko zmiany w bieżącym katalogu / wartości określonej przezpathargumentrelativeopcji i pokazuje nazwy ścieżek względem wyżej wymienionego katalogu.Naucz
--no-relativewcześniej nadpisywać--relativeDodaj dokumentację opcji git-format-patch (1)
--relativei--no-relative
Dokumentacja obejmuje obecnie :
diff.relative:Jeśli ustawione na „
true”, „git diff” nie pokazuje zmian poza katalogiem i pokazuje nazwy ścieżek względem bieżącego katalogu.
Jeśli chcesz wykluczyć podkatalogi, możesz użyć
git diff <ref1>..<ref2> -- $(git diff <ref1>..<ref2> --name-only | grep -v /)
Aby użyć Beyond Compare jako narzędzia diff do porównywania katalogów, pamiętaj, aby włączyć następujące dowiązania symboliczne:
W folderze Widok porównania → Reguły (ikona sędziego):
Następnie włącz podążanie za dowiązaniami symbolicznymi i aktualizuj ustawienia domyślne sesji:
LUB,
skonfiguruj alias w ten sposób:
git config --global alias.diffdir "difftool --dir-diff --tool=bc3 --no-prompt --no-symlinks"
Należy zwrócić uwagę, że w każdym przypadku wszelkie zmiany wprowadzone z boku (z lewej lub prawej strony) odnoszące się do bieżącego drzewa roboczego są zachowywane.
git diff master..yourbranch path/to/folder