Ab dem 24. Mai 2020 können Sie jetzt das Drittanbieter-Tool git diffn
(vollständige Offenlegung: Ich habe es geschrieben) für diesen Zweck verwenden. Es ist ein leichter Wrapper git diff
, der in der awk
muster- / aktionsbasierten Programmiersprache geschrieben ist. Hier ist eine Beispielausgabe von running git diffn
:
Hier ist eine Demo:
1/3: Demo von git diffn
:
Erstellen Sie diese Datei:
hello_world.c:
#include <stdio.h>
int main()
{
printf("Hello World\n");
return 0;
}
Verpflichte es:
git add hello_world.c
git commit -m "add hello_world.c"
Ändern Sie es in dieses und speichern Sie die Datei:
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;
}
Führen Sie jetzt aus:
git diff
Hier ist die Ausgabe von git diff
first zu Vergleichszwecken:
$ 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
+}
Und ein Screenshot, um die Farbe zu zeigen. Beachten Sie, dass der rot hervorgehobene Bereich lediglich leere Leerzeichen (in diesem Fall Leerzeichen) anzeigt, die gelöscht werden könnten:
Hier ist die Ausgabe von git diffn
. Beachten Sie, dass alle Zeilennummern perfekt angezeigt werden!
- Die Zeilennummern für gelöschte Zeilen befinden sich links und zeigen
-
links und rechts ein Zeichen :
, damit Sie besser sehen können - unabhängig davon, ob Ihre Augen rechts vom Doppelpunkt oder ganz unten scannen möchten links vom Bildschirm.
- Die Zeilennummern für hinzugefügte Zeilen befinden sich weiter rechts und zeigen ein
+
Zeichen sowohl ganz links als auch rechts von :
.
- Zeilennummern für unveränderte Zeilen , die für den Kontext angezeigt werden, werden sowohl für die linke (alte Datei) als auch für die rechte (neue Datei) angezeigt, getrennt durch a
,
.
Ausgabe von 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:+}
Und ein Screenshot, um die Farbe zu zeigen. Beachten Sie, dass die Doppelpunkte NICHT farbig oder stilisiert sind, um mit dem umgebenden Text links und rechts übereinzustimmen. Dies ist ein beabsichtigtes und entworfenes Verhalten, das als visuelles Trennzeichen zwischen den links hinzugefügten Zeilennummern und der ursprünglichen git diff
Ausgabe rechts fungiert.
2/3: Was ist das?
Von obengit-diffn.sh
:
BESCHREIBUNG:
git-diffn.sh
ein Ersatz, für git diff
den auch Zeile 'n'Nummern angezeigt werden! Verwenden Sie es genau so git diff
, außer dass Sie auch diese schönen Zeilennummern sehen, damit Sie Ihre Änderungen besser verstehen.
Da es sich nur um einen leichten, auf awk-Sprache basierenden Wrapper handelt git diff
, werden ALLE Optionen und Parameter git diff
akzeptiert , die akzeptiert werden. Beispiele:
git diffn HEAD~
git diffn HEAD~3..HEAD~2
funktioniert mit jeder Ihrer git diff
Farbeinstellungen, auch wenn Sie benutzerdefinierte Farben verwenden
In meiner Antwort hier erfahren Sie, wie Sie benutzerdefinierte Diff-Farben festlegen und einen Screenshot der Ausgabe von benutzerdefinierten Farben anzeigen von git diffn
: Wie passen Sie die Farbe des Diff-Headers in Git Diff an?
Hier sind einige Beispielbefehle git config
aus meiner obigen Antwort zum Festlegen benutzerdefinierter git diff
Farben und Attribute (Textformatierung):
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
ist die Farbausgabe standardmäßig eingeschaltet; Wenn Sie die Ausgabefarbe deaktivieren möchten, müssen Sie --no-color
oder verwenden --color=never
. Siehe man git diff
für Details. Beispiele:
git diffn --color=never HEAD~
git diffn --no-color HEAD~3..HEAD~2
3/3: Installation
- Windows (nicht getestet): Dies funktioniert möglicherweise im Bash-Terminal, das mit Git für Windows geliefert wird, ist jedoch nicht getestet. Installieren Sie Git für Windows. Öffnen Sie das mitgelieferte Bash-Terminal und befolgen Sie die nachstehenden Anweisungen. Ich brauche einige Tester, die dies in Git für Windows testen. Bitte sehen und beantworten Sie hier: https://github.com/git-for-windows/git/issues/2635 .
- Mac (ungetestet): Verwenden Sie das Terminal und befolgen Sie die nachstehenden Anweisungen. Möglicherweise müssen Sie installieren
gawk
. Wenn ja, versuchen Sie Folgendes : brew install gawk
.
- Linux (unter Ubuntu 18.04 getestet und funktioniert einwandfrei): Befolgen Sie die nachstehenden Anweisungen für das Terminal.
Option 1 (meine Empfehlung): Laden Sie das gesamte Repo herunter und erstellen Sie dann einen Symlink zum Programm, damit Sie jederzeit Updates erhalten können, indem Sie eine git pull
vom Repo ausführen.
Erstens, cd
wohin Sie dies installieren möchten. Dann renne:
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
Getan! Jetzt mach einfach den letzten Schritt unten!
Option 2 (für diejenigen, die nur die 1-Datei möchten): Laden Sie nur die eine Datei einmal herunter.
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
Getan! Jetzt mach einfach den letzten Schritt unten!
Letzter Schritt:
Schließen Sie nun Ihr Terminal und öffnen Sie es erneut oder geben Sie es erneut ein . ~/.bashrc
, und Sie sind fertig!
git diffn
funktioniert jetzt als exakter Drop-In-Ersatz für git diff
!
git diff --unified=0 | grep -Po '^\+\+\+ ./\K.*|^@@ -[0-9]+(,[0-9]+)? \+\K[0-9]+(,[0-9]+)?(?= @@)'