Ich bin ein Entwickler von Spielen und mobilen Anwendungen. Ich habe ziemlich viel Code in C ++ und Swift geschrieben. Und wie viele von Ihnen verwende ich Versionskontrollsysteme, insbesondere Gith.
Git verfügt über die funktionalste Befehlszeilenschnittstelle und Dutzende, wenn nicht Hunderte von Anwendungen, mit denen lokal über eine grafische Oberfläche gearbeitet werden kann, die nur einen Teil der Funktionalität des Git ausführen können. Das Problem ist, dass ich seit 10 Jahren Code schreibe, aber ich habe nicht den perfekten (für mich geeigneten) Git-GUI-Client gefunden. Beispiel: Github Desktop wurde kürzlich veröffentlicht. Ich habe es verwendet, bis ich nach einem bestimmten Commit suchen musste. Und ich hatte den üblichen Schmerz, dass diese Anwendung nicht weiß, wie man das macht. Und wieder kehrte ich zum Terminal zurück (mit automatischer Vervollständigung für den Git). Und es gibt solche Dinge in jeder GUI-Anwendung für die Gita. Ich bin jedoch nicht hierher gekommen, um sie zu kritisieren. Ich bin sicher, dass Sie und ohne mich viele Beschwerden über diese Anwendungen haben. Ich habe lange darüber nachgedacht, was eine ideale Git-GUI-Anwendung sein sollte. Sie waren flüchtige Fetzen des Verlangensworaus es schwierig ist, etwas Ganzes zusammenzusetzen. Und vor kurzem haben sich diese Gedankenfetzen zu einem einzigen Bild zusammengefasst. Im Folgenden werde ich dies im Format der TOR (technische Aufgabe) in der verständlichsten Form beschreiben.
Der perfekte Git GUI Client
Es ist wichtig, dass die Schnittstelle nicht sehr kompliziert ist. Wenn der Benutzer die App öffnet und mehr als 20 Schaltflächen sieht, ist die Idee scheiße. Die meisten Benutzer, die zur Arbeit mit git zur Konsole wechseln, schreiben einen Befehl git status, um die Liste der Dateien mit dem geänderten Status herauszufinden. Daher sollte unsere Anwendung fast auf dem gesamten Bildschirm eine Liste von Dateien in Form einer Hierarchie anzeigen, deren Status geändert wurde (z. B. ein Datei-Explorer / Finder). Es wird alles enthalten, was wir mit dem Befehl sehen könnengit status: geänderte Dateien, nicht verfolgte Dateien, hinzugefügt und entfernt (vielleicht habe ich einen Status vergessen). Jede Datei sollte wie in der Konsole entweder rot oder grün angezeigt werden, was darauf hinweist, dass sie dem Commit hinzugefügt wurde. Sie können mit der rechten Maustaste auf eine beliebige Datei klicken oder auf die drei Punkte auf der rechten Seite der Zeile klicken, um ein Kontextmenü aufzurufen. Im Kontextmenü können Sie eine Datei hinzufügen, wenn sie nicht hinzugefügt wurde ( git addBefehl im Terminal), sie zurücksetzen, wenn sie hinzugefügt wird, löschen, wenn sie nicht im Index enthalten ist (bereinigen). Sie können auch mit der rechten Maustaste auf den Ordner klicken und den gesamten Ordner hinzufügen ( git add folder). Das Zurücksetzen funktioniert genauso. Sie können dem Index auch alles mit einer kleinen Schaltfläche in der oberen linken Ecke des Dateibaums hinzufügen. Sie können auf die Zeile mit der Datei klicken, um das Diff im Vollbildmodus zu öffnen.
Xcode , (pulling, pushing, idle). . , - : .
- (git log - , git branch - , git commit - , git push - remote, git pull - remote, git remote - remote ..) tab ( GTA 5).
. (, pull, push, fetch). , (, push) ( remote , force), . tab . esc, . push, . .
git GUI && ||. , , :
git checkout dev && git pull && git checkout - && git merge -
4 :
dev
dev
, dev
dev
&& , - , . , git GUI , ( , ). git GUI .
, , , tab alt ( shift, ). , checkout, dev, ok , . - , tab alt, checkout ok, , , (tab - alt). - . tab ( esc ), , , . , Red Alert 2. z . , , .
, , (, ) . . ,
3a962a4a5979b338e4bfce1333b3009529c0ad08
d8def5c1b13a83a1df8797fab3d34760596df692
cffcf32979526f2e2d26c06fe0b73666a7ca0e87
2757ed191106b51b729c5437334d9d19b0d081b8
0fef00c89e8d60e41a452ffc31a8300b551116be
5e4fe2033549b89ef86834e2fcba350fa5099443
886602d02ec39f853c9b708957f27c3fbb51e66c
250ce1cd7b0b6ec415898e0a26cda49a2d326bd3
4a4a5e0f6257bb6c179981c4fb69011be7bbe53d
. . - . .
↕️ 3a962a4a5979b338e4bfce1333b3009529c0ad08
☘ d8def5c1b13a83a1df8797fab3d34760596df692
◽️ cffcf32979526f2e2d26c06fe0b73666a7ca0e87
⛎ 2757ed191106b51b729c5437334d9d19b0d081b8
㊙️ 0fef00c89e8d60e41a452ffc31a8300b551116be
5️⃣ 5e4fe2033549b89ef86834e2fcba350fa5099443
⏹ 886602d02ec39f853c9b708957f27c3fbb51e66c
⏸ 250ce1cd7b0b6ec415898e0a26cda49a2d326bd3
↖️ 4a4a5e0f6257bb6c179981c4fb69011be7bbe53d
, . , ( pull’), , , , . - : github, bitbucket, teamcity. .
Das ist alles. Ich freue mich über Kritik und Anregungen in den Kommentaren. Ich werde die Frage beantworten, warum ich die Idee hier teile, aber ich werde einfach nicht anfangen, sie selbst umzusetzen. Ich selbst beschäftige mich mit der Spieleentwicklung, arbeite zurzeit für Playtika und entwickle in meiner Freizeit eine Anwendung für die Arbeit mit SQLite https://sqliteman.dev . Ich selbst würde gerne anfangen, diesen Git-GUI-Client zu entwickeln, aber ich habe keine Zeit. Ich werde sehr glücklich sein, wenn jemand anderes es getan hat, während es mir nichts ausmacht, wenn jemand es tut, ohne die Quelle der Idee zu erwähnen. Ich bin sicher, dass die Idee im Gegensatz zur Umsetzung nichts wert ist. Und ich werde mich sehr freuen, wenn ich die Git-GUI-Anwendung meiner Träume habe.