Git ist eine freie Software zur verteilten Versionsverwaltung von Dateien, die mittlerweile jeder kennen sollte, daher verliere ich hier nicht viele Worte darüber. Wer die wichtigsten git Befehle wie „git add“, „git commit“ und „git push“ nicht kennt ist hier total falsch. Sorry, aber Du solltest erst mal hier anfangen.
Natürlich kann man git auch ohne die git bash verwenden. Jede IDE, die etwas auf sich hält hat eine Git Integration und darüber hinaus gibt es z.B. weitere Tools, wie TortoiseGit, SourceTree, GitKraken, Tower, etc.
Alle diese Git-Clients haben ihre Daseinsberechtigung und sind sehr gut geeignet, das Tippen in der Konsole durch Mausklicks auf Klickibunti-Oberflächen mehr oder weniger gut zu ersetzen. Bist Du also ein Fan von Klickibunti, dann kannst du jetzt den Browser-Tab schließen (PS: Dafür gibt es auch einen Keyboard Shortcut, falls Du doch mal die Tastatur verwenden möchtest „Ctrl-W“ ). 🙂
Du hast es also bis hierhin geschafft. Daher gehe ich davon aus, dass Du ein Fenster wie dieses hier den ganzen Tag offen hast.
![](https://www.jentsch.io/wp-content/uploads/2019/12/git-bash-window.png)
PS: Der dezente Liebesgruß kommt aus meiner „.bashrc“ Datei in meinem $HOME Verzeichnis liegt und folgenden Inhalt hat.
#!/bin/sh
echo -e ' ____ __ __ _ __ __ __ '
echo -e ' / _/ / \/ \ ____ _(_) /_ / /_ ____ ______/ /_ '
echo -e ' / / \ / / __ `/ / __/ / __ \/ __ `/ ___/ __ \ '
echo -e ' _/ / \ / / /_/ / / /_ / /_/ / /_/ (__ ) / / / '
echo -e ' /___/ \ / \__, /_/\__/ /_.___/\__,_/____/_/ /_/ '
echo -e ' \/ /____/ '
Damit erfreut man Kollegen, wenn sie mal wieder mit ihrem Klickibunti git Client nicht weiter kommen. 🙂
Was kann die git bash denn nun?
Um auf diese Frage qualifiziert zu antworten reicht ein einfacher Blog Post nicht, aber zusammenfassend kann man sagen: Sehr sehr sehr viel.
Die git bash bietet eine BASH-Emulation, mit der Git von der Kommandozeile aus ausgeführt werden kann. UNIX/Linux -Benutzer werden sich (fast) wie zu Hause fühlen, da sich die BASH-Emulation wie der Befehl „git“ in LINUX- und UNIX-Umgebungen verhält.
Zum Starten einer git bash klickt man einfach mit der rechten Maustaste auf einen Ordner im Windows Explorer und schon kann man im Kontextmenü mit einem klick auf „Git Bash here“ die git bash im ausgewälten Ordner öffnen.
![](https://www.jentsch.io/wp-content/uploads/2019/12/windows-explorer-context-menu-git-bash.png)
Nun kann die Magie beginnen
Neben dem Befehl „git“ enthält die git bash noch eine Reihe anderer Befehle wie z.B. „cd“ mit dem man das Verzeichnis wechseln kann oder „ls“ mit dem man sich Dateien auflisten lassen kann. Aber das ist noch lange nicht alles. So kann man z.B. mit dem Befehl „which“ nachsehen in welchem Verzeichnis die ausführbare Datei zu einem Befehl zu finden ist.
So kann man mit dem Befehl
$ which ls
prüfen, wo sich die Datei „ls“ befindet. Das Ergebnis ist für einen Linux/UNIX Nutzer nicht weiter überraschend.
/usr/bin/ls
Sehr schön. Was ist denn sonst noch so unter /usr/bin installiert? Das kann man einfach herausfinden, indem man „ls /usr/bin“ auf der Konsole tippt.
$ ls /usr/bin '[.exe'* msys-pcre-1.dll* arch.exe* msys-perl5_24.dll* astextplain* msys-readline7.dll* autopoint* msys-roken-18.dll* awk.exe* msys-sasl2-3.dll* b2sum.exe* msys-serf-1-0.dll* backup* msys-sl-0.dll* base32.exe* msys-smartcols-1.dll* base64.exe* msys-sqlite3-0.dll* basename.exe* msys-sqlite3amatch-0.dll* bash.exe* msys-sqlite3carray-0.dll* bashbug* msys-sqlite3closure-0.dll* bunzip2.exe* msys-sqlite3compress-0.dll* bzcat.exe* msys-sqlite3csv-0.dll* bzcmp* msys-sqlite3eval-0.dll* bzdiff* msys-sqlite3fileio-0.dll* bzegrep* msys-sqlite3fuzzer-0.dll* bzfgrep* msys-sqlite3icu-0.dll* bzgrep* msys-sqlite3ieee754-0.dll* bzip2.exe* msys-sqlite3memvfs-0.dll* bzip2recover.exe* msys-sqlite3nextchar-0.dll* bzless* msys-sqlite3percentile-0.dll* bzmore* msys-sqlite3rbu-0.dll* c_rehash* msys-sqlite3regexp-0.dll* captoinfo.exe* msys-sqlite3remember-0.dll* cat.exe* msys-sqlite3rot13-0.dll* chcon.exe* msys-sqlite3series-0.dll* chgrp.exe* msys-sqlite3sha1-0.dll* chmod.exe* msys-sqlite3showauth-0.dll* chown.exe* msys-sqlite3spellfix-0.dll* chroot.exe* msys-sqlite3totype-0.dll* cksum.exe* msys-sqlite3vfslog-0.dll* clear.exe* msys-sqlite3vfsstat-0.dll* cmp.exe* msys-sqlite3vtshim-0.dll* column.exe* msys-sqlite3wholenumber-0.dll* comm.exe* msys-ssh2-1.dll* core_perl/ msys-ssl-1.0.0.dll* cp.exe* msys-ssp-0.dll* csplit.exe* msys-svn_client-1-0.dll* cut.exe* msys-svn_delta-1-0.dll* cygcheck.exe* msys-svn_diff-1-0.dll* cygpath.exe* msys-svn_fs-1-0.dll* cygwin-console-helper.exe* msys-svn_fs_fs-1-0.dll* d2u.exe* msys-svn_fs_util-1-0.dll* dash.exe* msys-svn_fs_x-1-0.dll* date.exe* msys-svn_ra-1-0.dll* dd.exe* msys-svn_ra_local-1-0.dll* df.exe* msys-svn_ra_serf-1-0.dll* diff.exe* msys-svn_ra_svn-1-0.dll* diff3.exe* msys-svn_repos-1-0.dll* dir.exe* msys-svn_subr-1-0.dll* dircolors.exe* msys-svn_swig_perl-1-0.dll* dirname.exe* msys-svn_swig_py-1-0.dll* docx2txt* msys-svn_swig_ruby-1-0.dll* docx2txt.pl* msys-svn_wc-1-0.dll* dos2unix.exe* msys-tasn1-6.dll* du.exe* msys-ticw6.dll* echo.exe* msys-uuid-1.dll* egrep* msys-wind-0.dll* env.exe* msys-xml2-2.dll* envsubst.exe* msys-z.dll* ex.exe* mv.exe* expand.exe* ngettext.exe* expr.exe* nice.exe* factor.exe* nl.exe* false.exe* nohup.exe* fgrep* notepad* file.exe* nproc.exe* find.exe* numfmt.exe* findssl.sh* od.exe* fmt.exe* openssl.exe* fold.exe* p11-kit.exe* funzip.exe* passwd.exe* gawk-4.1.4.exe* paste.exe* gawk.exe* patch.exe* gdbm_dump.exe* pathchk.exe* gdbm_load.exe* perl.exe* gdbmtool.exe* perl5.24.1.exe* getconf.exe* pinky.exe* getfacl.exe* pldd.exe* getopt.exe* pluginviewer.exe* gettext.exe* pr.exe* gettext.sh* printenv.exe* gettextize* printf.exe* git-flow* ps.exe* git-flow-bugfix ptx.exe* git-flow-config pwd.exe* git-flow-feature readlink.exe* git-flow-hotfix realpath.exe* git-flow-init rebase.exe* git-flow-log rebaseall* git-flow-release recode-sr-latin.exe* git-flow-support regtool.exe* git-flow-version reset.exe* gitflow-common restore* gitflow-shFlags rm.exe* gkill.exe* rmdir.exe* gpg-zip* runcon.exe* gpg.exe* rview.exe* gpgsplit.exe* rvim.exe* gpgv.exe* sasldblistusers2.exe* grep.exe* saslpasswd2.exe* groups.exe* scp.exe* gunzip* sdiff.exe* gzexe* sed.exe* gzip.exe* seq.exe* head.exe* setfacl.exe* hostid.exe* setmetamode.exe* hostname.exe* sftp.exe* iconv.exe* sh.exe* id.exe* sha1sum.exe* igawk* sha224sum.exe* infocmp.exe* sha256sum.exe* infotocap.exe* sha384sum.exe* install.exe* sha512sum.exe* join.exe* shred.exe* kill.exe* shuf.exe* ldd.exe* sleep.exe* ldh.exe* sort.exe* less.exe* split.exe* lessecho.exe* ssh-add.exe* lesskey.exe* ssh-agent.exe* link.exe* ssh-copy-id* ln.exe* ssh-keygen.exe* locale.exe* ssh-keyscan.exe* locate.exe* ssh-pageant.exe* logname.exe* ssh.exe* ls.exe* sshd.exe* mac2unix.exe* ssp.exe* md5sum.exe* start* minidumper.exe* stat.exe* mintty.exe* stdbuf.exe* mkdir.exe* strace.exe* mkfifo.exe* stty.exe* mkgroup.exe* sum.exe* mknod.exe* sync.exe* mkpasswd.exe* tabs.exe* mktemp.exe* tac.exe* mount.exe* tail.exe* msgattrib.exe* tar.exe* msgcat.exe* tee.exe* msgcmp.exe* test.exe* msgcomm.exe* tic.exe* msgconv.exe* timeout.exe* msgen.exe* toe.exe* msgexec.exe* touch.exe* msgfilter.exe* tput.exe* msgfmt.exe* tr.exe* msggrep.exe* true.exe* msginit.exe* truncate.exe* msgmerge.exe* trust.exe* msgunfmt.exe* tset.exe* msguniq.exe* tsort.exe* msys-2.0.dll* tty.exe* msys-apr-1-0.dll* tzset.exe* msys-aprutil-1-0.dll* u2d.exe* msys-asn1-8.dll* umount.exe* msys-asprintf-0.dll* uname.exe* msys-atomic-1.dll* uncompress* msys-blkid-1.dll* unexpand.exe* msys-bz2-1.dll* uniq.exe* msys-charset-1.dll* unix2dos.exe* msys-cilkrts-5.dll* unix2mac.exe* msys-com_err-1.dll* unlink.exe* msys-crypt-0.dll* unzip.exe* msys-crypto-1.0.0.dll* unzipsfx.exe* msys-curl-4.dll* update-ca-trust* msys-edit-0.dll* updatedb* msys-expat-1.dll* users.exe* msys-fdisk-1.dll* vdir.exe* msys-ffi-6.dll* vendor_perl/ msys-formw6.dll* vi* msys-gcc_s-seh-1.dll* view.exe* msys-gdbm-4.dll* vim.exe* msys-gdbm_compat-4.dll* vimdiff.exe* msys-gettextlib-0-19-8-1.dll* vimtutor* msys-gettextpo-0.dll* wc.exe* msys-gettextsrc-0-19-8-1.dll* which.exe* msys-gmp-10.dll* who.exe* msys-gmpxx-4.dll* whoami.exe* msys-gomp-1.dll* winpty-agent.exe* msys-gssapi-3.dll* winpty-debugserver.exe* msys-hdb-9.dll* winpty.dll* msys-heimbase-1.dll* winpty.exe* msys-heimntlm-0.dll* wordpad* msys-history7.dll* xargs.exe* msys-hx509-5.dll* xgettext.exe* msys-iconv-2.dll* xmlcatalog.exe* msys-idn-11.dll* xmllint.exe* msys-intl-8.dll* xmlwf.exe* msys-kadm5clnt-7.dll* xxd.exe* msys-kadm5srv-8.dll* yes.exe* msys-kafs-0.dll* zcat* msys-kdc-2.dll* zcmp* msys-krb5-26.dll* zdiff* msys-lzma-5.dll* zegrep* msys-magic-1.dll* zfgrep* msys-menuw6.dll* zforce* msys-metalink-3.dll* zgrep* msys-mpfr-4.dll* zipgrep* msys-ncurses++w6.dll* zipinfo.exe* msys-ncursesw6.dll* zless* msys-otp-0.dll* zmore* msys-p11-kit-0.dll* znew* msys-panelw6.dll*
Wow, das ist ja eine ganze Menge. Um herauszufinden wie viele Befehle es sind, kann man die Befehle mit dem Aufruf von „find /usr/bin -type f | wc -l“ zählen. Das Ergebnis ist:
$ find /usr/bin -type f | wc -l 444
Satte 444 Dateien. OK, nicht jede Datei ist ein Befehl, also noch mal nur die Dateien, die auf „.exe“ enden.
$ find /usr/bin -type f | grep ".exe" | wc -l 237
Das sind noch immer über 230 ausführbare Dateien, die man sich mit der git bash auf den Computer geholt hat. Da sollte doch mehr möglich sein als nur der Befehl „git“ – oder?
Top-10 Befehle der git bash
Statt sich alle 237 Befehle der git Bash in detail anzusehen lohnt es sich mal vorzufiltern. Was sind also die Top-10 Befehle der git bash? …..
Jeder mag hier seine persönlichen Top-10 aufstellen, aber es gibt ein paar Befehle, die ich eigentlich jeden Tag benutze und die ich in diversen kleinen Skripten verwende, die mir jeden Tag viel Arbeit abnehmen und Fehler vermeiden.
awk.exe bash.exe cat.exe chmod.exe cp.exe date.exe echo.exe find.exe grep.exe gzip.exe head.exe hostname.exe kill.exe less.exe ls.exe mkdir.exe mv.exe nohup.exe pwd.exe rm.exe scp.exe sed.exe sftp.exe sh.exe sleep.exe sort.exe ssh.exe tail.exe tar.exe touch.exe tr.exe unzip.exe vim.exe wc.exe which.exe xargs.exe
OK, ok. Es sind keine 10. Aber was soll ich machen? Das sind einfach alles sooooooooooooooo tolle Befehle und eine Überschrift wie z.B. „Top-36 Befehle der git bash“ wirkt eher abschreckend und ist SEO-technisch bestimmt auch eine mittelschwere Katastrophe. Also bleibe ich bei den Top 10. Wem das nicht passt „Ctrl-W“ hilft!
Wer sich nun fragt, wie ich die Dateien so schnell zusammengedapft habe? Ganz einfach mit den Tools der git-Bash.
- Befehle auflisten und in eine Textdatei schreiben
find /usr/bin -type f | grep „.exe“ > befehle.txt - Datei im vim öffnen
vim befehle.txt - Jeder Befehl kann nun mit einem „dd“ im Kommando-Modus gelöscht werden (Eine Sehr ausführliche „Kurzeinführung in vim findet man unter https://www-user.tu-chemnitz.de/~hot/VIM/VIM/vikurz.html)
- Dann in jeder Zeile den Präfix “ /usr/bin/“ entfernen. Das geht z.B. so:
:%s/^.*\///g
Das ist keine Magie, das sind nur reguläre Ausdrücke. Die machen Spaß, wenn man sie versteht. Anderenfalls bekommt man davon leider Haarausfall - Nun noch alle Zeilen zu einer Zeile zusammenfassen.
JJJJJJJJJJ…
Statt x-mal J zu drücken kann man auch „J“ ein wenig gedrückt halten.
Damit ist auch schon einer der wichtigsten Befehle der Git-Bash erklärt. Der vim ist ein Texteditor. Er ist sehr mächtig und wer in einmal beherrscht möchte nie wieder einen anderen Editor haben. Genau aus dem Grund gibt es auch vi-Plugins für Eclipse, Visual-Studio-Code, IntelliJ, etc.
Da viele der oben genannten Befehle ähnlich wie der vim-Editor sehr umfangreich sind beschränke ich mich nun auf 1-2 Sätze pro Befehl und verlikne dann ein passendes Manual.
- awk.exe
awk ist eine Skriptsprache zum Editieren und Analysieren von Texten. Eingabedaten werden dabei immer zeilenweise abgearbeitet.
https://www-user.tu-chemnitz.de/~hot/unix_linux_werkzeugkasten/awk.html - bash.exe
Die Bash eine Mensch-Maschine-Schnittstelle, die eine Umgebung bereitstellt, in der zeilenweise Texteingaben und -ausgaben möglich sind. Letzteres erfolgt über die Befehlszeile, in die Befehle eingetippt und durch betätigen der Eingabetaste eingegeben werden.
https://www-user.tu-chemnitz.de/~hot/unix_linux_werkzeugkasten/bash.html - cat.exe
cat ist ursprünglich zum Zusammenfügen von Dateien gedacht (von concatenate = verketten, verknüpfen). Häufig wird cat aber als (einfacher) Pager zum Anzeigen von Dateiinhalten im Terminal eingesetzt.
https://de.wikipedia.org/wiki/Cat_(Unix) - chmod.exe
Mit chmod verändert man die Zugriffsrechte von Dateien.
https://wiki.ubuntuusers.de/chmod/ - cp.exe
cp steht für copy und ist der Befehl zum Kopieren, es können Dateien oder ganze Verzeichnisse kopiert werden. Verzeichnisse können optional auch rekursiv, also inklusive Unterverzeichnissen, kopiert werden.
https://wiki.ubuntuusers.de/cp/ - date.exe
Ausgeben oder setzen der Systemzeit
http://www.linuxinfozentrum.ch/befehle/date.htm - echo.exe
echo gibt eine oder mehr Zeichenketten auf die Standardausgabe
http://www.linuxinfozentrum.ch/befehle/echo.htm - find.exe
find sucht nach bestimmten Dateien
http://www.linuxinfozentrum.ch/befehle/find.htm - grep.exe
grep (global regular expression print) gibt alle Zeilen aus, in denen ein bestimmter regulärer Ausdruck gefunden wird
http://www.linuxinfozentrum.ch/befehle/grep.htm - gzip.exe
gzip komprimiert Dateien
http://www.linuxinfozentrum.ch/befehle/gzip.htm - head.exe
head schreibt den Anfang einer Datei auf die Standardausgabe
http://www.linuxinfozentrum.ch/befehle/head.htm - hostname.exe
hostname zeigt oder setzt den (DNS Netzwerk-) Namen des Systems
http://www.linuxinfozentrum.ch/befehle/hostname.htm - kill.exe
kill beendet einen Prozeß
http://www.linuxinfozentrum.ch/befehle/kill.htm - less.exe
less ist ein Pager wie more der Dateien seitenweise anzeigt
http://www.linuxinfozentrum.ch/befehle/less.htm - ls.exe
ls (list) zeigt den Inhalt eines Verzeichnisses
http://www.linuxinfozentrum.ch/befehle/ls.htm - mkdir.exe
mkdir erzeugt ein leeres Verzeichnis
http://www.linuxinfozentrum.ch/befehle/mkdir.htm - mv.exe
mv (move) verschiebt eine Datei oder benennt sie um
http://www.linuxinfozentrum.ch/befehle/mv.htm - nohup.exe
nohup läßt ein Programm die Signale SIGHUP SIGINT SIGQUIT und SIGTERM ignorieren
http://www.linuxinfozentrum.ch/befehle/nohup.htm - pwd.exe
pwd gibt den Namen des aktuellen Verzeichnisses aus
http://www.linuxinfozentrum.ch/befehle/pwd.htm - rm.exe
rm löscht Dateien
http://www.linuxinfozentrum.ch/befehle/rm.htm - scp.exe
SSH verschlüsselte Übermittlung von Dateien im Netzwerk
http://mikiwiki.org/wiki/scp_(Shell-Befehl) - sed.exe
sed (stream editor) ist ein Editor zur nicht-interaktiven Textbearbeitung
http://www.linuxinfozentrum.ch/befehle/sed.htm - sftp.exe
sftp (Secure File Transfer Protocol) ist eine verschlüsselte Alternative zu FTP
https://wiki.ubuntuusers.de/SSH/#sftp - sh.exe
Befehlsspracheninterpreter, der Befehle ausführt, die von stdin oder aus einer Datei gelesen werden.
https://linux.die.net/man/1/sh - sleep.exe
sleep läßt die Zeit verstreichen und tut nichts
http://www.linuxinfozentrum.ch/befehle/sleep.htm - sort.exe
sort sortiert die Zeilen einer Textdatei
http://www.linuxinfozentrum.ch/befehle/sort.htm - ssh.exe
ssh ist ein Programm, mit dessen Hilfe auf eine sichere Art und Weise eine verschlüsselte Netzwerkverbindung mit einem entfernten Gerät hergestellt werden kann.
https://de.wikipedia.org/wiki/Secure_Shell - tail.exe
tail zeigt das Ende einer Datei
http://www.linuxinfozentrum.ch/befehle/tail.htm - tar.exe
tar (tape archiver) verwaltet Dateiarchive
http://www.linuxinfozentrum.ch/befehle/tar.htm - touch.exe
touch ändert den Zeitstempel einer Datei
http://www.linuxinfozentrum.ch/befehle/touch.htm - tr.exe
tr (translate) ersetzt oder entfernt bestimmte Zeichen aus einem Datenstrom
https://de.wikipedia.org/wiki/Tr_(Unix) - unzip.exe
Dekomprimiert zip-Archive.
https://www.howtoforge.de/anleitung/linux-zip-befehl-fuer-anfaenger-5-beispiele/ - vim.exe
Editor – siehe oben. - wc.exe
wc zählt die Anzahl von Zeichen, Wörtern oder Zeilen
http://www.linuxinfozentrum.ch/befehle/wc.htm - which.exe
Einen Befehl finden
http://www.tnt-computer.de/man.php?command=which - xargs.exe
xargs – Erstellen und Ausführen von Befehlszeilen aus Standardeingaben
https://wiki.ubuntuusers.de/xargs/
Die Auflistung der Befehle wird den Funktionen und Möglichkeiten der einzelnen Kommandos leider nicht ganz gerecht. Viele der Befehle sind so mächtig, dass selbst Yoda sich vor ihnen verstecken würde. Daher kann ich jedem, nur empfehlen, sich mal intensiver mit dem Thema zu befassen.
Einer der Gründe, warum die git bash immer eines der ersten Pakete ist, die ich auf einem neue aufgesetzten Windows PC installiere, ist die die Tatsache, dass ich dank der git Bash das Beste aus beiden Welten bekomme. Linux ist nun mal leider in den meisten Unternehmen keine Option und ohne grep und awk würde ich keine 5 Minuten als Software-Entwickler überlegen.
Gibt es da nicht noch mehr?
Klar gibt es da noch mehr. Wer den has nicht voll kriegen kann sollte mal Cygwin ausprobieren. Mit Cygwin lassen sich Computerprogramme, aus der Linux Welt unter Windows ausführen. Die Anzahl der verfügbaren Programme ist schier endlos und was fehlt, kann dank verfügbarem gcc einfach selber compiliert werden. Allerdings ist Cgwin nicht gerade für den Einsteiger geeignet und eher für Nutzer mit einiger Linux/Unix Erfahrung geeignet. Eine vollständige Liste aller verfügbaren Pakete findet man unter https://cygwin.com/packages/package_list.html.
Das Baukastenprinzip
Die grundlegende Philosophie der Unix-Kommandos ist das Baukasten-Prinzip: Statt der eierlegenden Wollmilchsau für einzelne Aufgabengebiete werden spezialisierte Befehle für elementare Aufgaben bereitgestellt, die miteinander verknüpft werden können, um komplexere Aktionen durchzuführen.
Die meisten Befehle kennen drei Standardkommunikationswege in für die Verknüpfung untereinander verwendet werden können:
- Standardeingabe (stdin)
Daten in ein Programm einlesen. Ist normalerweise mit der Tastatur verbunden - Standardausgabe (stdout)
Daten ausgeben. Ist normalerweise mit dem Monitor verbunden. - Standardfehlerausgabe (stderr)
Diagnose- und Fehlermeldungen oder Warnungen ausgegeben.
Ausgaben von Programmen die nach stdout oder stderr ausgegeben werden, können aber auch in eine Datei geschrieben werden oder als Eingabe (stdin) für folgende Programme fungieren.
Der Befehl mit dem ich weiter oben die Liste erstellt habe ist ein gutes Beispiel dafür:
find /usr/bin -type f | grep “.exe” > befehle.txt
Hier wird der Befehl find aufgerufen und die Ausgabe (stdout) mit dem Pipe Zeichen „|“ als Eingabe für den Befehl grep durchgereicht. Die Ausgaben von grep wiederum werden nicht auf dem Montor ausgegeben sondern mit „> DATEINAME“ in eine Datei umgeleitet.
Das entspricht genau der grundlegenden Philosophie der Linux/Unix Welt, kleine Bausteine miteinander zu verknüpfen um Aufgeben möglichst effizient zu lösen.
Fazit
Nachdem ich nun einen fast 20000 Zeichen langen Text verfasst habe versuche ich mich also noch mal daran zu erinnern, was eigenltich der Grundgedanke hinter dem Blog-Post war…….
Ach ja. Die git bash hat mehr zu bieten, als nur „git add“, „git commit“ und „git push“. Wie viel das ist und was davon sinnvoll eingesetzt werden kann muss jeder für sich selbst herausfinden.
![](https://www.jentsch.io/wp-content/uploads/2019/12/ICH-KANN-DIR-DIE-TUeR-ZEIGEN-ABER-DURCHGEHEN-MUSST-DU-ALLEINE.jpg)