Warum Git lernen, wenn es GUI-Apps für GitHub gibt?

84

Welche Vorteile bringt es , wenn Sie lernen, Git über die Befehlszeile zu verwenden, wenn GitHub GUI-Apps für Mac und Windows bereitstellt ?

Momentan verwende ich ihre Mac-App, um meine Repositorys zu aktualisieren, und bis jetzt scheint sie meine Bedürfnisse zu decken. Was könnte ich verpassen?

Histelheim
quelle
15
Vergiss gitk nicht, das ist eine GUI für Linux.
DeveloperDon
14
Ihnen fehlen alle Skripte.
SK-logic
3
@KChaloux, ja, es gibt einen sehr guten Grund, warum die meisten GUI-Apps überhaupt nicht skriptfähig sind. Und die, die scriptable sind, sind gerade schrecklich (denken Sie COM und ähnliche Abscheulichkeiten).
SK-logic
2
@KChaloux, nein, der Grund ist keine Qualität. Es ist wirklich schwierig, eine reine GUI-Anwendung skriptfähig zu machen. Alle vernünftigen Ansätze, die ich kenne, basieren im Wesentlichen auf der Einführung einer Befehlszeilenschnittstelle - entweder einer CLI im Unix-Stil oder einer textbasierten Befehlssprache oder einem Binärprotokoll, das im Wesentlichen mit einer Befehlssprache identisch ist siehe COM. Der beste Ansatz besteht jedoch darin, einen gemeinsamen Kern zu haben, auf den sowohl über verschiedene CLI-Tools als auch über GUIs zugegriffen werden kann. Letztere können der Einfachheit halber auch auf CLI aufbauen.
SK-logic
13
Das tust du nicht. Auf die gleiche Weise müssen Sie HTML / CSS nicht lernen, da Dreamweaver und Frontpage (oder was auch immer es jetzt ist) existieren. Vielleicht funktioniert es für Sie für einige Dinge, aber wenn es nicht jemand besser weiß, wie es wirklich funktioniert.
DorkRawk

Antworten:

116

Ich denke, diese Frage ist nur ein Sonderfall von "Warum sollte ich eine CLI lernen, für die es eine GUI-Alternative gibt?". Ich vermute, die letztere Frage ist ungefähr so ​​alt wie GUIs, und ich gehe davon aus, dass es im Laufe der Jahre viele Versuche gab, sie zu beantworten. Ich könnte versuchen, mich durch meine eigene Antwort auf diese Frage zu wühlen, aber Neal Stephenson hat in seinem bemerkenswerten Aufsatz " Am Anfang ... war die Befehlszeile " vor mehr als zehn Jahren artikuliert, womit ich einverstanden bin .

Während der Aufsatz viele Aspekte des Rechnens anspricht und sogar Stephenson selbst der Meinung ist, dass ein Großteil davon veraltet ist, erklärt der Aufsatz, inwiefern CLIs auf äußerst überzeugende Weise bessere GUIs sind, was mein Leben buchstäblich verändert hat. Es ist eine lange Lektüre (~ 40 Seiten), aber ich kann es niemandem genug empfehlen, der Fragen stellt, wie Sie sie hier gestellt haben.

Obwohl ich alle Fragen zu CLI und GUI auf ähnliche Weise beantworten würde, gilt meine Antwort meiner Meinung nach besonders für Ihre spezifische Frage, da Sie sich für alle Computerfragen entschieden haben git. gitist wohl das neueste Werkzeug in einer nicht allzu langen Liste von Computerwerkzeugen, die wirklich der in Stephensons Aufsatz beschriebenen Hole-Hawg-Metapher würdig sind. gitWie bei vielen anderen Unix-ähnlichen Dingen ist dies ein Grund, die CLIs als solche zu kennen. Manchmal trotz seines unberechenbaren "Porzellans" ; manchmal deswegen.

Ja, Sie können mit der GUI von Github auf jeden Fall produktiv sein, entweder für OSX oder einfach nur auf deren Website. Ja, es ist eigentlich ziemlich elegant, ich benutze die Funktionen der Website oft. Aber nein, du wirst niemals das göttliche Gefühl haben, wenn dein rechter kleiner Finger über einem wahnsinnigen git filter-branchBefehl für ein oder zwei Äonen hängt . Wenn ich nur eine Sache aus meiner Erfahrung mit dem Rechnen heraushalten müsste - die mentalen Herausforderungen, die engen Freundschaften, die sich in einem Rechenzentrum um 2 Uhr morgens gebildet haben, die unendliche Kompetenz zum Klettern, das Berühren des Lebens der Benutzer und das Regieren über PBs mit wertvollen Daten, das Gedämpfte Jobs und komfortables Leben - behalte nur eine Sache - es wäre das göttliche Gefühl.

Yaniv Aknin
quelle
5
Weiterführender
Elias Zamaria
1
Re: obsolet: das wäre der "BeOS as Batmobile" Teil, oder?
Naught101
2
Garrett Birkel hat den Aufsatz "Am Anfang ... war die Kommandozeile" aktualisiert, indem er seine Kommentare mit Neal Stephensons Originalaufsatz verwechselt. Sie können darüber lesen Sie hier .
Ich mag es,
2
... ja, wer braucht eine CLI, wenn Sie eine GUI-Oberfläche mit Visual Basic erstellen können. Großartig für Dinge wie das Verfolgen einer IP-Adresse.
Hey
3
Ich schlug nicht vor, dass "älter ist besser", sondern dass CLIs (für viele Hacker-Fälle) GUIs überlegen sind. CLIs sind auch binären Switches und Patchkabeln überlegen. Deshalb benutze ich CLIs. Der Artikel ist kein "Beweis", weil er "in einem Artikel" ist, sondern eine Prosa mit Argumenten, die ausdrücken, was ich an CLIs mag. Es ist alt, aber auch UNIX, na und. Übrigens arbeite ich für Google, und die überwiegende Mehrheit der Entwickler in meinem Umfeld verwendet eine CLI-basierte Entwicklungsumgebung (aber ich kann natürlich nicht für Google als Ganzes sprechen).
Yaniv Aknin
108

Wenn all Ihre Bedürfnisse gedeckt sind, fantastisch, Sie müssen sich nicht weiter mit GIT beschäftigen, dann ist es besser, Ihre Zeit damit zu verbringen, etwas zu lernen, was Sie tatsächlich brauchen.

git ist nur ein Tool, das Sie kennen, wenn Sie mit einer GUI-App etwas tun müssen, das Sie nicht können. Denken Sie daran, dass Github! = Git.

yannis
quelle
1
Ich stimme Ihnen zu, aber es könnte Dinge geben, die mir derzeit nicht bewusst sind und die mir nützlich sein könnten, wenn ich sie kenne. Nein?
Histelheim
28
@AronLindberg Ja, das gibt es wohl. Aber Sie stellen die falsche Frage, was Sie untersuchen sollten, sind die Workflows und Konzepte von Git, nicht die Befehlszeile. Selbst wenn Ihnen jemand alle Funktionen auflistet, die in den GUI-Apps fehlen, wie können Sie dann feststellen, ob Sie sie tatsächlich benötigen? (auch das ist etwas, was du sehr einfach selbst tun kannst, indem du dir die Dokumentation von git
ansiehst
//, Eine CLI wird Sie dazu zwingen, sich eingehender mit den Workflows und Konzepten zu befassen, da die gesamte Organisation, Auswahl und der gesamte Ablauf in Ihrem Kopf stattfinden und nicht in Assistenten und Dropdown-Menüs.
Nathan Basanese
57

Die meisten CLI-reinen Funktionen kommen nur dann zum Einsatz, wenn Sie Ihr Repository versehentlich in einen seltsamen Zustand versetzen und es reparieren möchten. Auf der anderen Seite können Sie Ihr Repo am häufigsten in einen seltsamen Zustand versetzen, indem Sie erweiterte Funktionen verwenden, die Sie nicht verstehen. Wenn Sie sich an das halten, was die grafische Benutzeroberfläche bietet, wird dies in 99% der Fälle Ihren Bedarf decken.

Der andere Grund, warum Sie die CLI lernen möchten, ist, dass es sich um die Lingua Franca handelt. Das bedeutet, dass viele Benutzer unterschiedliche GUIs auf unterschiedlichen Plattformen verwenden. Wenn Sie jedoch in StackOverflow oder anderswo um Hilfe bitten, werden die Antworten wahrscheinlich in Form von CLI-Befehlen vorliegen. Wenn Sie die CLI nicht kennen, sind Ihre Möglichkeiten, Hilfe zu erhalten, wesentlich eingeschränkter.

Karl Bielefeldt
quelle
Auf jeden Fall beste Antwort hier. Nicht bla-bla-bla-Philosophie.
John CJ
//, Dies war mein erster Gedanke, und obwohl mich die philosophischen Antworten angesprochen haben, ist der Hauptgrund, warum ich CLIs verwende, dass es viel einfacher ist, über Text zu argumentieren, zu standardisieren und mit anderen zu kommunizieren. Wir wissen vielleicht nicht alle, wie man zeichnet, aber wir wissen alle, wie man tippt.
Nathan Basanese
9

GUI-Anwendungen sind auf manuelle Interaktionen angewiesen, um komplexe Verhaltensweisen auszuführen. Dies ist ideal, um Projekte einzurichten und neue Dinge zu entwickeln.

Die Vorteile einer Befehlszeilenschnittstelle (Command-Line Interface, CLI) liegen in der Möglichkeit, vorgegebene Skripts zu erstellen, die automatisiert werden können. Die GUI von GitHub besteht nur aus ein paar hübschen Grafiken und ausgefallenen Schaltflächen, die die Git-CLI aufrufen.

Was die GUI-App nicht für Sie erledigt, ist die automatische Aktualisierung des Trunks eines Repos auf einem Server täglich um 1:30 Uhr. Ein Cron-Job, der die Git-CLI aufruft, ist jedoch eine sehr einfache Möglichkeit, dies einzurichten.

Wenn Sie in einem Team an einem Projekt arbeiten, ist es außerdem praktisch, Installationsskripts, Erstellungsskripts, Bereitstellungsskripts usw. einzurichten, damit sich Teamkollegen auf die Lösung von Problemen konzentrieren können, anstatt auf langwierige, sich wiederholende Aufgaben.

zzzzBov
quelle
Kofferraum? Ich denke du meinst Meister.
jpmc26
@ jpmc26, das habe ich geschrieben, als ich noch nicht mit dem Git von SVN vertraut war. Verzeihen Sie die Terminologie.
zzzzBov
6

Ein weiterer Grund, warum die CLI vorzuziehen ist, ist eine Frage des Workflows. Viele Frameworks werden über die Befehlszeile verwaltet. Durch die Verwendung von Git über die CLI kann ich mich weiterhin auf mein Projekt und auf dieses Projektverzeichnis konzentrieren. Zum Beispiel könnte ich einen Test durchführen und dann beschließen, die neuen Änderungen über dieselbe Schnittstelle und denselben Speicherort festzuschreiben.

Shigar Kenze
quelle
+1; und je einfacher / zugänglicher es zu benutzen ist, desto wahrscheinlicher ist es, dass ich es zu geeigneten Zeiten benutze (tippe tippe tippe tippe tippe tippe tippe tippe tippe tippe tippe tippe tippe)
Abe
5

Ich muss mich in letzter Zeit wirklich mit Git auseinandersetzen, um bei einer SVN-zu-Git-Migration helfen zu können. Und das, was ich gelernt habe, ist, dass die Git-Befehlszeilen-Tools nicht der komplizierte Teil sind, den man lernen muss.

Die Konzepte und Ideen hinter Git sind der komplexe Teil (und das nicht, weil sie schlecht entworfen sind, sondern einfach, weil sie den meisten Menschen fremd sind, die von einem anderen, zentralisierten VCS stammen).

Sobald ich die Konzepte verstanden habe, wurden die tatsächlichen Befehlszeilenanweisungen relativ einfach. Das bedeutet, dass eine Benutzeroberfläche das Verständnis von Git nicht wirklich verbessert (mit Ausnahme der einfachsten Operationen).

Joachim Sauer
quelle
3
Tatsächlich sind die Konzepte dahinter gitso einfach, dass die Leute sie nicht herausfinden können - sie suchen nach etwas Schwierigerem.
Gahooa
4

Die Kenntnis der CLI ist nützlich, wenn Sie sich in einer Umgebung befinden, in der Sie keine GUI-App haben.

Ein mögliches Szenario: Sie werden gebeten, nur ein paar Tage bei einem Projekt an einem geschlossenen Ort mitzuhelfen, an dem es ärgerlich schwierig und langwierig ist, neue Tools in das System zu bekommen. Sie verwenden nur CLI. Ihre Produktivität wurde nur beeinträchtigt, weil Sie alles noch einmal lernen müssen.

Grumpasaurus
quelle
Ein-Satz-Antworten sind selten sehr wertvoll. Können Sie bitte Ihre Antwort erweitern?
Walter
//, Er ist der @Grumpasaurus. Was hast du erwartet, ein Sonett?
Nathan Basanese
2

Ein Grund für das Erlernen von Befehlszeilen-Git ist, dass die meisten Dokumentationen für diese Umgebung geschrieben wurden. Wenn Sie eine Frage stellen: "Wie mache ich X mit git?", Besteht die Möglichkeit, dass die Antwort Befehlszeilenbefehle enthält.

Nemanja Trifunovic
quelle
1

Eines der Hauptprobleme bei der Verwendung einer GUI im Vergleich zur Befehlszeile ist, dass Sie in den meisten Fällen nicht die gleiche Kontrolle über Ihren Prozess haben können. Beispielsweise ist die GitHub-Anwendung in Bezug auf die Benutzerfreundlichkeit für viele Git-Workflows großartig, könnte jedoch für fortgeschrittene Git-Prozesse noch umständlich sein.

Als Beispiel hier sind einige Dinge, die ich nicht herausgefunden habe, wie man die GitHub-Anwendung benutzt (eine andere Sache, die zu beachten ist, dass jede GUI auch eine Lernkurve hat).

  • Commits neu starten
  • Push / Pull / Fetch einzeln (in GitHub sind sie zu einem einzigen "Sync" -Befehl zusammengefasst, was manchmal zu Problemen führen kann)
  • Änderungszusagen

Schließlich ermöglichen CLIs Benutzern, diese Tools beim Skripten zu verwenden.

KLee1
quelle
Letzter Punkt ist für mich ganz wichtig. Bei der Erstellung von Skripten, Tools und Servern wird selten eine GUI verwendet, um die Versionskontrolle des GUI-Zugriffs zu ermöglichen. Man muss stattdessen die Kommandozeile benutzen.
0

Ich kenne GitHub für Mac nicht, aber die Windows-App führt nur die häufigsten Aufgaben aus - Hinzufügen, Festschreiben, Drücken, Ziehen usw. Komplexere Aufgaben git merge --no-ffmüssen beispielsweise über die Befehlszeile ausgeführt werden.

Es gibt auch Fälle mit git, in denen die grafische Benutzeroberfläche nicht verfügbar ist, z. B. beim SSH-Zugriff auf Remoteserver.

Wenn Ihnen die grafische Benutzeroberfläche jedoch alles bietet, was Sie benötigen, ist das Erlernen der Befehlszeile möglicherweise Zeitverschwendung. In meiner Arbeit wird TortoiseSVN nur unter Windows verwendet, und ich musste die SVN-Befehlszeile noch kein einziges Mal berühren.

ikh
quelle
0

Ich habe gerade einen Fall kennengelernt, in dem CLI besser sein kann als GUI. Um dies zu veranschaulichen, habe ich ein Beispiel aus einer Buch-Git-Versionskontrolle für alle genommen.

Wenn Sie über ein Intranet freigeben möchten, können Sie Folgendes verwenden:

  1. Gitolite-Server
  2. Gemeinsames Freigabeverzeichnis mit leeren Repositorys

Sehen Sie sich die Schritte zum Erstellen eines Bare-Repos an.

Erstellen eines leeren Repositorys im CLI-Modus

Der Befehl zum Erstellen eines Bare-Repositorys ist mit dem Befehl identisch, den Sie zum Klonen eines Repositorys verwendet haben, mit Ausnahme des Parameters --bare, der den Unterschied ausmacht. git clone --bare C:\Users\raviepic3\Desktop\Workbench C:\generic_share\ Bare_Workbench Wenn Sie den obigen Code in Ihrer Konsole ausführen, sollte ein bloßer Klon unseres Workbench-Repositorys in Ihrem gemeinsamen freigegebenen Ordner mit dem Namen generic_share erstellt werden.

Erstellen eines leeren Repositorys im GUI-Modus

Das Erstellen eines Bare-Clones aus einem bereits vorhandenen Repository mithilfe der grafischen Benutzeroberfläche ist ein einfacher Vorgang. Alles was Sie tun müssen ist:

  1. Kopieren Sie das .git-Verzeichnis aus dem vorhandenen Repository und fügen Sie es mit einem anderen_namen.git (einem beliebigen Namen, den Sie Ihrem neuen Bare-Repository geben möchten) außerhalb des Repositorys ein. In unserem Fall haben wir ein nicht-nacktes Repo namens Workbench unter C: \ Users \ raviepic3 \ Desktop \, in dem wir content.docx haben. Und jetzt möchte ich ein neues nacktes Repository über die GUI erstellen. Ich kopiere C: \ Users \ raviepic3 \ Desktop \ Workbench.git und füge es als C: \ generic_share \ Bare_Workbench.git ein.

  2. Öffnen Sie das config fileInnere von Bare_Workbench.git mit einem Texteditor und suchen Sie die Zeile, die besagt, bare = falseund ersetzen Sie die Zeichenfolge false durch true.

  3. Speichern und schließen.

In der GUI müssen Sie so viele Klicks ausführen und sich merken, welche Datei bearbeitet werden soll. In CLI erledigt ein einfacher Befehl alles für Sie.

Sid Smith
quelle