git difftool, otwórz wszystkie pliki diff natychmiast, a nie szeregowo
Domyślnym zachowaniem Git diff jest otwieranie KAŻDEGO pliku diff w trybie szeregowym(poczekaj, aż poprzedni plik zostanie zamknięty przed otwarciem następnego pliku).
Szukam sposobu na otwarcie wszystkich plików naraz-w innym przypadku np. otworzyłoby to wszystkie pliki w zakładkach w tym samym oknie BC.
Ułatwiłoby to przeglądanie złożonego zestawu zmian; przewijanie do tyłu i do przodu między plikami diff i ignorowanie nieistotnych plików.
12 answers
Począwszy od git
v1. 7. 11, możesz użyć git difftool --dir-diff
aby wykonać diff katalogu.
Następująca odpowiedź dotyczy git
instalacji starszych niż wersja 1.7.11.
To samo pytanie zostało zadane na git mail list.
UĹ 'oĹźyĹ' em skrypt powĺ ' ok oparty na tym wątku e-mail, ktĂłry wykonuje răłĺźnicowanie katalogăłw pomiÄ ™ dzy dowolnymi zatwierdzeniami.
Począwszy od git v1. 7. 10, skrypt git-diffall
jest zawarty w contrib
standardowego Gita instalacja.
Dla wersji przed v1. 7. 10, można zainstalować z git-diffall
projekt na GitHub .
Oto opis projektu:
Skrypt git-diffall dostarcza mechanizm diff oparty na katalogach dla git. Skrypt opiera się na diff.możliwość konfiguracji narzędzia do określ, która przeglądarka diff jest używana.
Ten skrypt jest kompatybilny ze wszystkimi formularze używane do określenia zakresu zmiany w diff:
1)
git diffall
: pokazuje różnice między drzewo robocze i zmiany etapowe
2)git diffall --cached [<commit>]
: pokazuje różnica między etapami zmian iHEAD
(lub inny o nazwie commit)
3)git diffall <commit>
: pokazuje różnice pomiędzy drzewo robocze i nazwane commit
4)git diffall <commit> <commit>
: show diff pomiędzy dwoma nazwanymi commitami
5)git diffall <commit>..<commit>
: to samo co above
6)git diffall <commit>...<commit>
: Pokaż zmiany na gałęzi zawierającej i do po drugie, zaczynając od wspólnego przodek obu<commit>
Uwaga: Wszystkie formularze przyjmują opcjonalną ścieżkę ogranicznik
[--] [<path>]
Ten skrypt jest oparty na przykładzie dodane przez Tomasz Rast w Git lista .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-19 15:43:33
Oto, co ustaliłem...
Skopiuj poniższy kod do pliku o nazwie git-diffall
(bez rozszerzenia):
#!/bin/sh
git diff --name-only "$@" | while read filename; do
git difftool "$@" --no-prompt "$filename" &
done
Umieść plik w cmd
folderze Twojego katalogu Git install (np C:\Program Files (x86)\Git\cmd
)
I używaj tak jak ty git diff
:
git diffall
git diffall HEAD
git diffall --cached
git diffall rev1..rev2
etc...
Uwagi: kluczem do tego jest & param, który mówi zewnętrznemu poleceniu diff, aby uruchomić w zadaniu w tle, więc pliki są przetwarzane natychmiast. W przypadku BeyondCompare otwiera to jeden ekran z każdym plikiem w swojej karcie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-18 04:42:40
meld
ma fajną funkcję, że jeśli dasz mu katalog pod kontrolą źródła (Git, Mercurial, Subversion, Bazaar i prawdopodobnie inne) to automatycznie wyświetli wszystkie zmienione pliki i możesz dwukrotnie kliknąć, aby zobaczyć poszczególne różnice.
IMO o wiele łatwiej jest wpisać meld .
i zorientować się w VCS, niż skonfigurować VCS do uruchomienia meld
. Dodatkowo możesz użyć tego samego polecenia bez względu na to, jakich VC używa twój projekt, co jest świetne, jeśli przełączysz między nimi dużo.
Jedynym minusem jest to, że meld wolniej skanuje zmiany niż przekazuje zmiany z git / hg / svn, chociaż to, czy jest wystarczająco wolne, aby być problemem, zależy od tego, jak go używasz, jestem pewien.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-16 07:01:41
Znalazłem tę metodę (GitDiff.bat i GitDiff.RB) kopiuje pliki do starych / nowych temp dirs, a następnie porównuje na nich folder.
Ale wolałbym oglądać pliki robocze bezpośrednio (z katalogu roboczego), ponieważ BeyondCompare ma przydatną funkcję edycji pliku z poziomu okna diff, co jest Świetne do szybkiego czyszczenia.
Edit: a podobna metoda tutaj w odpowiedzi na moje pytanie na liście dyskusyjnej Gita.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-18 00:39:02
git meld
=> https://github.com/wmanley/git-meld jest niesamowitym skryptem, który otworzy schludny diff wszystkich plików w jednym oknie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-18 05:26:03
Diffuse ma również integrację VCS. Współpracuje z wieloma innymi VC, w tym SVN, Mercurial, Bazaar, ... W przypadku Gita, wyświetli nawet trzy okienka, jeśli niektóre, ale nie wszystkie zmiany są wystawione. W przypadku konfliktów będą nawet cztery szyby.
Wywołaj to za pomocą
diffuse -m
W Twojej kopii roboczej Git.
Według mnie najlepsza różnica wizualna, jaką widziałem od dekady. (A ja też próbowałem meld.)Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-24 21:18:56
Zauwazylem tutaj , ze Araxis Merge ma opcje polecenia '- nowait':
- teraz uniemożliwia compare czekanie na zamknięcie porównania
Może to zwróci natychmiastowy kod wyjścia i zadziała, ktoś tego doświadczył? Nie można znaleźć podobnej opcji dla BeyondCompare...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:18:25
Jeśli chcesz tylko otworzyć wszystkie pliki, które są aktualnie modyfikowane, spróbuj czegoś takiego:
vi $(git status | sed -n '/.*modified: */s///p')
Jeśli tworzysz commity "złożonych zestawów zmian", możesz ponownie rozważyć swój przepływ pracy. Jedną z naprawdę fajnych cech Gita jest to, że ułatwia on programistom redukcję złożonych zestawów zmian do serii prostych łatek. Zamiast edytować wszystkie aktualnie zmodyfikowane pliki, warto zajrzeć do
git add --patchktóre pozwolą Ci do selektywnej scenografii.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-11 11:30:06
Napisałem skrypt powershell, który powieli dwa działające drzewa i porównał je z DiffMerge. Więc możesz zrobić:
GitNdiff master~3 .
Aby porównać gałąź master sprzed trzech checkIn ' ów z bieżącym drzewem roboczym, na przykład.
Lśniące, nowe i prawdopodobnie pełne robaków. Wadą jest to, że pliki w drzewie roboczym, które nie zostały jeszcze dodane, są kopiowane do obu drzew roboczych. Może być również powolny.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-01 16:09:14
Dla zainteresowanych użyciem Git-diffall na Mac OS X Z Araxis, rozwidliłem projekt git-diffall na github i dodałem AppleScript, który zawija polecenie Araxis Merge. Uwaga: jest to nieco zmodyfikowany klon pliku araxisgitdiff
, który jest dostarczany z Araxis Merge dla Mac OS X.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-17 10:54:37
Poniższe działa z meld i kdiff3
git difftool --dir-diff origin/branch1..origin/branch2
Otwiera wszystkie pliki w oknie, które można łatwo przeglądać. Może być używany z zestawami zmian w miejscu pochodzenia / branch-name
Eg: git difftool --dir-diff origin/master..24604fb72f7e16ed44115fbd88b447779cc74bb1
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-29 19:26:50
Możesz użyć gitk i zobaczyć wszystkie różnice w tym samym czasie
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-11 02:50:41