Ist Git als Addon für IDE's unabdingbar?

Rosenduft

Banned
Registriert
Dez. 2019
Beiträge
98
Hallo Freunde. Ich habe vor kurzem begonnen, mich dem Thema der Versionsverwaltung zu stellen. Git scheint wohl eine der besten Lösungen zu sein, weswegen ich mir grundlegende Git-Kentnisse angeeignet habe.

Ich habe nebenbei auch herausgefunden, dass es diverse Git-Addons für diverse IDE's gibt. Aber ich frage mich: wozu? Normalerweise verwendet man Git innerhalb der Kommandozeile des Betriebssystems. So habe ich es zumindest anfänglich gelernt. Mich würde interessieren, ob es unschicklich wäre, bspw. seine mit Eclipse entwickelte Java-Anwendung mit Git innerhalb einer Kommandozeile und ohne Zuhilfenahme irgendwelcher Eclipse-Addons zu benutzen, oder ob es gängig ist, solche Addons zu benutzen. Und wenn letzteres der Fall ist: Was sind die wesentlichen Vorteile?

Mein Bauchgefühl sagt mir, dass es ausreicht, seine Software allein mit Hilfe der cmd (oder bash) zu versionieren. Einwände?
 
Zuletzt bearbeitet:
Am Ende des Tages ist es halt der Komfort, der bei bestimmten Git Aktionen wohl ganz nett ist - kannst ja mal Git Konflikt Resolution in der CLI vs. z.B. in IntelliJ vergleichen. Da finde ich das ganz nett, grundsaetzlich nutze ich aber nur CLI
 
  • Gefällt mir
Reaktionen: Marco01_809, BeBur, new Account() und 2 andere
Du mußt nur wissen, was Du da genau tust. Dann ist es egal, auf welche Weise Du versionierst. Ich nutze beides, bei Eclipse nutze Addon mit GUI.
 
  • Gefällt mir
Reaktionen: Rosenduft
Warum nutzt du denn eine IDE und nicht vim/emacs/nano/...? Die Antwort ist die Selbe.

Der gewonnene Komfort und die Zeitersparnis ist immens viel Wert. Ebenso die dabei nicht verloren gegangenen Nerven... Ab davon hat git eine der schlimmsten APIs überhaupt. Die Dokus sind auch von nem Technik Nerd aus den 80ern geschrieben worden. Statt primär Use Cases in die Doku zu bringen, wird jeder Befehl mit jedem Schritt einzeln bis ins kleinste Detail beschrieben. Verstanden hast du nach mehrmaligem Durchlesen trotzdem nichts, weil so mit Begriffen um einen geworfen wird, dass du den Fokus verloren hast.

Sieh dir doch mal nur die Doku zu git rebase an. Kein Wunder dass es so viele verschmähen.

Es ist bezeichnend, wenn man über Stack Overflow herausfindet, was
Code:
git rebase --onto <newparent> <oldparent>
eigentlich macht. Das wird nirgends in der Doku behandelt. Stattdessen wird über topic-Branches und master-Branches und next-Branches und upstreams und "Transplantationen" und Forks und und und und schwadroniert...
 
  • Gefällt mir
Reaktionen: new Account(), kuddlmuddl und maloz
Ich würde noch hinzufügen, dass du mit der git CLI immer auf der sicheren Seite bist, wenn du weißt, was du tust.

Der Grund, weshalb viele git über eine GUI nutzen ist eben der, dass sie außer

git add *
git commit -m "[MESSAGE]"
git pull
git push

nichts kennen und/oder nutzen wollen und bei einem Merge-Konflikt einfach ihre Dateien mit den eigenen Änderungen kopieren, hard resetten neu pullen und die Dateien zurück kopieren.

Verstehe das Argument mit der Zeitersparnis zudem überhaupt nicht..
 
  • Gefällt mir
Reaktionen: kuddlmuddl
Was mich angeht, find ich's nett, daß ich für ein neues Projekt gleich automatisch ein grundlegendes Repository dafür angelegt bekomme.

Aber die eigentliche Versionskontrolle mach ich lieber händisch. Geht bestimmt auch über die IDE gut genug, aber ich hab lieber vor der Nase, was was sein soll, welches Update welcher Datei zu welchem Commit gehören soll und so fort.

(Natürlich bin ich auch ziemlicher Neuling, was VC angeht. War bisher einfach nicht nötig gewesen. Aber grad vor dem Hintergrund hab ich lieber das Bißchen extra an Kontrolle über das, was da passiert.)
 
Tokolosh schrieb:
Verstehe das Argument mit der Zeitersparnis zudem überhaupt nicht..
git gui.png
(CB verkleinert große Screen wohl... Das Original ist 6400x1440 groß...)

Wieviel Befehle bräuchtest du denn so auf der CLI, um die dargestellten Infos aufzuzeigen, plus beim Klick auf einen Commit die geänderten Dateien (+ Doppelklick für nen Diff), plus die Auflösung der Changes bei nem Merge Commit + alle Details zum Commit selbst.

Du fragst noch welche Zeitersparnis? Es ist möglich viel mehr Informationen auf geringerem Platz unterzubringen.

Es gibt mit tig ein ncurses Interface. Ist ganz nett und vereinfacht die Arbeit ein wenig. Mit ner Integration in ner IDE hält es trotzdem nicht mit. Eher als Alternative für TortoiseGit gedacht.

Versteh mich nicht falsch, ich nutze die CLI ständig für Rebases (für nen Merge-Konflikt aber die IDE) und tiefgreifende Sachen (bspw. reflog), aber in Sachen Praktikabilität ist die CLI einfach nur furchtbar. Beim Entwickeln nehm ich bspw. JetBrains Tools, für reguläre Sachen im Dateisystems hält TortoiseGit her, für spezielle Sachen muss die CLI ran und auf dem Server ist sowieso nur die CLI verfügbar.

Mein favorisierter History-Alias:
Code:
hist = log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n''          %C(white)%s%C(reset) %C(dim white)- %an%C(reset) ' --all
Der Newline ist nur, weil Graph, Commit ID, Datum (abs + rel) und Headline sonst nicht auf eine Zeile passen und falls doch ein Newline den kompletten Output zerstört. Da lob ich mir ne GUI mit nem Control, was (autosized) Columns beherrscht.

Btw: Ich hasse auch andere Tools wie GitKraken, SourceTree und Co. Sind vielleicht ganz nett für Git, aber ich nutz doch nicht ein vollkommen isoliertes Tool für nen Workflow, wenn es bessere Integrationen in meiner IDE gibt.
RalphS schrieb:
Aber die eigentliche Versionskontrolle mach ich lieber händisch. Geht bestimmt auch über die IDE gut genug, aber ich hab lieber vor der Nase, was was sein soll, welches Update welcher Datei zu welchem Commit gehören soll und so fort.
Die mir einzig richtige Integration bietet JetBrains mit ihren IDEs. Dort kann man mittlerweile wirklich das Wichtigste über die GUI in ausreichend detailliertem Maße regeln. Es passieren noch Sachen automatisch, aber bspw. nur so sinnloses Zeugs wie "Stash + Pull + Stash pop". Wenn es nen Konflikt gibt, passiert es bspw. nicht automatisch, sondern du erhälst ne Fehlermeldung vorher.

Das Commit-Window ist bspw. das Vorbildlichste überhaupt.
1576968759852.png
  • Oben die geänderten Dateien, ob diese mit committed werden sollen, oder ob du ggf. nur vergessen hast, sie aus dem Staging-Bereich zu entfernen. Heißt ergo nicht Dialog schließen, Datei aus dem Staging Bereich entfernen, Commit Window neu öffnen.
  • Darunter die Nachricht, welche bei jedem Tippen gespeichert wird. Raucht dir im schlimmsten Fall IDE ab, ist die Nachricht trotzdem vorhanden.
  • Ganz unten einen Diff der ausgewählten Datei. In einer der letzten Versionen kam auch ein Interactive Commit hinzu. Da hast du so kleine Marker neben den Zeilennummern und kannst sagen, welche Zeile dem Commit hinzugefügt werden soll und welche ggf. nicht (Debug Statements anyone?). Alternativ hieß es F4 um die ausgewählte Datei zu öffnen, die Stelle zu finden, zu entfernen (ggf. mehrfach, je nachdem wie wüst die Statements im Code liegen), zu commit und danach gar wieder hinzuzufügen.
Summa summarum bin ich (mittlerweile) vollends(?) eigentlich nur mit der JetBrains Integration zufrieden. Alle anderen IDEs haken da teils extrem hinterher und sehen es nur als "Nice to have" an, obwohl es eigentlich ein integraler Bestandteil eines Entwicklers ist.

Bei NetBeans würde ich auch streiken und die CLI wählen...


Das ist dieses typische "Ach mappen wie mal 1:1 ins GUI was die CLI hergibt. Der User wird das schon fressen." Wahrscheinlich nutzt es im Endeffekt niemand.
 
  • Gefällt mir
Reaktionen: konkretor, Oelepoeto, new Account() und eine weitere Person
Ich verwende sogar ein extra Tool für Git: Gitkraken
Vorteile:
  • Ich kann auch zeilengenau committen
  • Nimmt einen nochmal einiges ab im Vergleich zu z.B. Jetbrains (z.B. neues Repo, oder Einrichten von git)
  • bisher die übserichtlichste Möglichkeit, die ich gefunden habe

Wobei aber für mich meistens auch GIT innerhalb der IDE ausreicht.
Für Sonderwünsche greif ich auch manchmal auf die Konsole zurück.
 
Tokolosh schrieb:
Der Grund, weshalb viele git über eine GUI nutzen ist eben der, dass sie außer
...
nichts kennen und/oder nutzen wollen und bei einem Merge-Konflikt einfach ihre Dateien mit den eigenen Änderungen kopieren, hard resetten neu pullen und die Dateien zurück kopieren.
Solche überheblichen Beiträge liebe ich ja.

Am Ende des Tages ist Git ein Tool um einfach und effektiv kollaborativ Software zu entwicklen. Wieso man hier jetzt wieder einen Glaubenskrieg CLI vs GUI lostreten muss und dabei unsinnige Behauptungen lostritt verstehe ich überhaupt nicht.
In einem großen Projekt mit vielen Branches ist aus meiner Sicht eine GUI häufig unabdingbar. Wir arbeiten mit 3-4 Kollegen an der selben Codebasis und grundsätzlich wird für jedes Feature ein Branch erstellt. Die anschließenden Pull Requests über die CLI ohne Syntax Highlighting usw. zu mergen ist kaum zu schaffen.

Die Behauptung alle die eine GUI verwenden tun dies, weil sie die Git Befehle nicht kennen ist ziemlich engstirnig. Aber ich kenne Leute wie dich aus meinem eigenen Umfeld. Alles per Hand, am besten nur Sprachen mit Pointern, am liebsten alles in der Kommandozeile Fummeln usw...
Dabei steht am Ende das Ergebnis im Vordergrund und nicht der Weg. Und wenns hart auf hart kommt starten solche Leute dann auch meist eine GUI um zu schauen was überhaupt Sache ist. :D

@Topic: Ich nutze auf der Arbeit für kleinere Sachen ohmyzsh mit git Plugin ansonsten hauptsächlich Sourcetree (auch privat unter Windows) und die IntelliJ Git Integration.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Sparta8
G00fY schrieb:
Solche überheblichen Beiträge liebe ich ja.

Am Ende des Tages ist Git ein Tool um einfach und effektiv kollaborativ Software zu entwicklen. Wieso man hier jetzt wieder einen Glaubenskrieg CLI vs GUI lostreten muss und dabei unsinnige Behauptungen lostritt verstehe ich überhaupt nicht.
In einem großen Projekt mit vielen Branches ist aus meiner Sicht eine GUI häufig unabdingbar. Wir arbeiten mit 3-4 Kollegen an der selben Codebasis und grundsätzlich wird für jedes Feature ein Branch erstellt. Die anschließenden Pull Requests über die CLI ohne Syntax Highlighting usw. zu mergen ist kaum zu schaffen.

Die Behauptung alle die eine GUI verwenden tun dies, weil sie die Git Befehle nicht kennen ist ziemlich engstirnig. Aber ich kenne Leute wie dich aus meinem eigenen Umfeld. Alles per Hand, am besten nur Sprachen mit Pointern, am liebsten alles in der Kommandozeile Fummeln usw...
Dabei steht am Ende das Ergebnis im Vordergrund und nicht der Weg. Und wenns hart auf hart kommt starten solche Leute dann auch meist eine GUI um zu schauen was überhaupt Sache ist. :D

@Topic: Ich nutze auf der Arbeit für kleinere Sachen ohmyzsh mit git Plugin ansonsten hauptsächlich Sourcetree (auch privat unter Windows) und die IntelliJ Git Integration.

Die Grundsatzdiskussion versuchst du mir jetzt unterzuschieben. Ich hab lediglich auch meine persönliche Erfahrung mit Entwicklern in meinem Umfeld dargestellt und habe bewusst versucht objektiv zu bleiben. Es ist nunmal leider so, dass einige dazu verdonnert werden git zu nutzen, aber sich nur mit den Grundbefehlen beschäftigen wollen, nur um dann festzustellen, dass Visual Studio 20XX irgendwelche Fehler beim committen/mergen gemacht hat, weil einfach rumgeklickt wurde.

Ich bin keiner dieser Freaks, die du beschreibst und mag auch gerne GUIs, gerade aus Gründen der besseren Verständnis und Veranschaulichung. Zudem hasse ich Pointer-Sprachen ;) Allerdings finde ich ein gewisser Umgang mit der Konsole sollte nicht vernachlässigt werden.
 
  • Gefällt mir
Reaktionen: Sparta8
Tokolosh schrieb:
Allerdings finde ich ein gewisser Umgang mit der Konsole sollte nicht vernachlässigt werden.
Dann sind wir uns ja doch einig. :)

In diesem Sinne Frohe Weihnachten.
 
Zurück
Oben