Jak mogę uzyskać najwyższy zwrot z mojej gotówki za pomocą polecenia „diff”?

9

Próbowałem używać diffpolecenia linux w przeszłości bez większego szczęścia i cierpliwości. Zwykle korzystam z narzędzia GUI, takiego jak DiffMerge lub Kdiff.

Ostatnio zacząłem próbować używać diffponownie do porównywania plików na zdalnych systemach za pośrednictwem ssh i znalazłem -y / --side-by-sideopcję, która jest bardzo przydatna, ale nadal mam wrażenie, że nie wykorzystuję w pełni tego narzędzia.

Jestem więc ciekawy, jak osiągnąć następujące rzeczy:

  1. Podświetl zmiany lub użyj kodowania kolorami, aby wydruk był bardziej czytelny
  2. Scal - wybierz linie z różnicami i wprowadź zmiany w jednym z plików

Poza tym nie znalazłem wielu dobrych przykładów, kiedy googlujesz, więc jeśli masz jakieś sekrety linux-fu, aby uzyskać jak najwięcej z różnic, czy mógłbyś się tym podzielić? Będę głównie porównywał tekstowe pliki konfiguracyjne, ale wszelkie sztuczki i wskazówki byłyby wspaniałe.

Dla porównania - narzędzie DiffMerge z łatwością pokazuje zmiany obok siebie z podświetlaniem kolorów. Ikony u góry pozwalają przełączać się między widokami „pokaż wszystko”, „pokaż różnice” i „pokaż różnice w kontekście”. Chciałbym trochę z tej funkcji w wierszu polecenia.

ps: Powinienem również zauważyć, że jedną z innych opcji, które uważam za bardzo przydatne, jest to, o --suppress-common-linesczym dowiedziałem się w tym zwięzłym i czytelnym wpisie na blogu .

cwd
źródło
3
Używam vimdiff dość często.
nicerobot
@nicerobot Możesz to opublikować jako odpowiedź - jest to bardzo przydatne i pomocne narzędzie.
rozcietrzewiacz
Nie możesz, jest za darmo ... Przepraszam, nic nie mogłem na to
poradzić
Większość moich różnic w Emacsie.
Gilles 'SO - przestań być zły'
@whoami - co?
cwd 24.11.11

Odpowiedzi:

9

Bez szczególnej kolejności:

  • meld to bardzo fajny program do różnicowania, który robi bardzo ładne różnice i łączy trójstronnie.
  • git config --global merge.conflictstyle diff3daje wyniki łączenia w trzech kierunkach do użycia z narzędziami takimi jak meld.
  • wdiffrobi różnicę słów , bardzo ładne, jeśli są kolorowe :wdiff -w "$(tput bold;tput setaf 1)" -x "$(tput sgr0)" -y "$(tput bold;tput setaf 2)" -z "$(tput sgr0)" ...
  • Aby zminimalizować cruft w danych diffwyjściowych, zwykle używam opcji --ignore-all-space( -w)
  • diff-ignore-moved-lines* robi to, co jest napisane na etykiecie.
  • difff* może służyć do różnicowania tylko wierszy pasujących w danych polach.

* Oświadczenie: Jestem autorem i opracowałem je, aby pomóc w różnicowaniu i scalaniu interfejsu CLI i GUI.

l0b0
źródło
1
Używam też diffusecałkiem sporo.
Arcege
diff -u jest również dość proste.
Gabe.
5

Stwierdziłem, vimdiffże jest bardzo przydatny.

nicerobot
źródło
3

Aby uzyskać kolorowanie w diff, powinieneś spojrzeć na http://colordiff.sourceforge.net/ . To jest tylko opakowanie na różnicę i jako takie, wszystkie opcje poleceń nadal działają.

Jeśli masz Ubuntu, po prostu napisz:

    # sudo apt-get install colordiff

Ryzyko niespełnienia twojego przypadku użycia gitjest bardzo przyjemnym VCS, który dobrze integruje się z wieloma różnymi narzędziami do różnicowania i scalania (zarówno wiersza poleceń, jak i GUI). Spróbuj, jeśli jest to opcja.

Alexandre Martins
źródło
1

Próbować sdiff

diffma również opcje ( -elub -ed), aby utworzyć skrypt scalający do użytku zed

sdiff, diffI edpowinny być częścią skorupy gdziekolwiek pójdziesz.

Oprogramowanie do kontroli wersji prawdopodobnie ma również wbudowane narzędzie diffi merge.

Adam F.
źródło