Od 24 maja 2020 r. Możesz teraz używać w git diffn
tym celu narzędzia innej firmy (pełne ujawnienie: napisałem). Jest to lekkie opakowanie git diff
, napisane w awk
języku programowania opartym na wzorcach / akcjach. Oto przykładowe dane wyjściowe z uruchomienia git diffn
:
Oto demo:
1/3: Demo git diffn
:
Utwórz ten plik:
hello_world.c:
#include <stdio.h>
int main()
{
printf("Hello World\n");
return 0;
}
Zatwierdź to:
git add hello_world.c
git commit -m "add hello_world.c"
Zmień to na to i zapisz plik:
hello_world.c:
// Basic hello world example
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("Hello Gabriel\n");
int i = 700;
printf("i = %i\n", i);
return 0;
}
Teraz biegnij:
git diff
Oto wynik działania git diff
pierwszego dla celów porównawczych:
$ git diff
diff --git a/hello_world.c b/hello_world.c
index e01704a..e971b73 100644
--- a/hello_world.c
+++ b/hello_world.c
@@ -1,8 +1,12 @@
+// Basic hello world example
+
#include <stdio.h>
-int main()
+int main(int argc, char *argv[])
{
- printf("Hello World\n");
-
+ printf("Hello Gabriel\n");
+
+ int i = 700;
+ printf("i = %i\n", i);
return 0;
-}
\ No newline at end of file
+}
I zrzut ekranu pokazujący kolor. Zwróć uwagę, że sekcja podświetlona na czerwono pokazuje po prostu puste spacje (w tym przypadku spacje), które można usunąć:
Oto wynik działania git diffn
. Zauważ, że pokazuje doskonale wszystkie numery linii!
- Numery linii dla usuniętych linii znajdują się po lewej stronie i pokazują
-
znak zarówno po lewej, jak i po prawej stronie, :
aby pomóc ci lepiej widzieć - niezależnie od tego, czy twoje oczy lubią skanować w dół na prawo od okrężnicy, czy w dół po drugiej stronie po lewej stronie ekranu.
- Numery wierszy dla dodanych wierszy są dalej w prawo i pokazują
+
znak zarówno po lewej, jak i po prawej stronie :
.
- Numery wierszy dla niezmienionych wierszy pokazanych dla kontekstu są wyświetlane zarówno dla lewego (stary plik), jak i dla prawej (nowy plik), oddzielonych znakiem
,
.
Wyjście git diffn
:
$ git diffn
diff --git a/hello_world.c b/hello_world.c
index e01704a..e971b73 100644
--- a/hello_world.c
+++ b/hello_world.c
@@ -1,8 +1,12 @@
+ 1:+// Basic hello world example
+ 2:+
1, 3: #include <stdio.h>
2, 4:
- 3 :-int main()
+ 5:+int main(int argc, char *argv[])
4, 6: {
- 5 :- printf("Hello World\n");
- 6 :-
+ 7:+ printf("Hello Gabriel\n");
+ 8:+
+ 9:+ int i = 700;
+ 10:+ printf("i = %i\n", i);
7, 11: return 0;
- 8 :-}
\ No newline at end of file
+ 12:+}
I zrzut ekranu pokazujący kolor. Zwróć uwagę, że dwukropki NIE są kolorowane ani stylizowane tak, aby pasowały do otaczającego tekstu po lewej i prawej stronie. Jest to celowe i zaprojektowane zachowanie działające jako wizualny separator między numerami linii dodanymi po lewej stronie a oryginalnym git diff
wyjściem po prawej stronie.
2/3: Co to jest?
Od górygit-diffn.sh
:
OPIS:
git-diffn.sh
zamiennik typu drop-in, dla git diff
którego jest również wyświetlany numer linii! Używaj go dokładnie tak git diff
, jak , z tą różnicą, że zobaczysz również te piękne numery wierszy, które pomogą Ci zrozumieć wprowadzone zmiany.
ponieważ jest to tylko lekkie opakowanie oparte na języku awk git diff
, przyjmuje WSZYSTKIE akceptowane opcje i parametry git diff
. Przykłady:
git diffn HEAD~
git diffn HEAD~3..HEAD~2
działa z dowolnymi git diff
ustawieniami kolorów, nawet jeśli używasz kolorów niestandardowych
Zobacz moją odpowiedź tutaj, aby dowiedzieć się, jak ustawić niestandardowe kolory różnic, a także zobaczyć zrzut ekranu wyjściowego koloru niestandardowego z git diffn
: Jak dostosować kolor nagłówka diff w git diff?
Oto kilka przykładowych git config
poleceń z mojej odpowiedzi powyżej, aby ustawić niestandardowe git diff
kolory i atrybuty (formatowanie tekstu):
git config --global color.diff.meta "blue"
git config --global color.diff.old "black red strike"
git config --global color.diff.new "black green italic"
git config --global color.diff.context "yellow bold"
in git diffn
, wyjście kolorowe jest domyślnie WŁĄCZONE; jeśli chcesz wyłączyć kolor wyjściowy, musisz użyć --no-color
lub --color=never
. Zobacz man git diff
szczegóły. Przykłady:
git diffn --color=never HEAD~
git diffn --no-color HEAD~3..HEAD~2
3/3: Instalacja
- Windows (nieprzetestowane): to może działać wewnątrz terminala bash dostarczanego z Git dla Windows , ale nie zostało przetestowane. Zainstaluj Git dla Windows. Otwórz terminal bash, z którym jest dostarczany, i spróbuj wykonać poniższe instrukcje. Potrzebuję kilku testerów, którzy przetestują to w Git dla Windows. Zobacz i odpowiedz tutaj: https://github.com/git-for-windows/git/issues/2635 .
- Mac (nieprzetestowane): użyj terminala i postępuj zgodnie z poniższymi instrukcjami. Może być konieczne zainstalowanie
gawk
. Jeśli tak, spróbuj tego : brew install gawk
.
- Linux (testowany na Ubuntu 18.04 i działa idealnie): postępuj zgodnie z instrukcjami terminala poniżej.
Opcja 1 (moja rekomendacja): pobierz całe repozytorium, a następnie utwórz link symboliczny do programu, abyś mógł łatwo otrzymywać aktualizacje, wykonując git pull
repozytorium w dowolnym momencie.
Po pierwsze, cd
gdziekolwiek chcesz to zainstalować. Następnie uruchomić:
git clone https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles.git
cd eRCaGuy_dotfiles/useful_scripts
mkdir -p ~/bin
ln -si "${PWD}/git-diffn.sh" ~/bin/git-diffn
Gotowe! Teraz wykonaj ostatni krok poniżej!
Opcja 2 (dla tych, którzy chcą tylko jednego pliku): pobierz tylko jeden plik jeden raz.
mkdir -p ~/bin
cd ~/bin
wget https://raw.githubusercontent.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles/master/useful_scripts/git-diffn.sh
chmod +x git-diffn.sh
mv git-diffn.sh git-diffn
Gotowe! Teraz wykonaj ostatni krok poniżej!
Ostatni krok:
Teraz zamknij i ponownie otwórz swój terminal lub przeprowadź go ponownie za pomocą . ~/.bashrc
i gotowe!
git diffn
będzie teraz działać jako dokładny zamiennik git diff
!
git diff --unified=0 | grep -Po '^\+\+\+ ./\K.*|^@@ -[0-9]+(,[0-9]+)? \+\K[0-9]+(,[0-9]+)?(?= @@)'