Je suis développeur de jeux et d'applications mobiles. J'ai écrit pas mal de code en C ++ et Swift. Et, comme beaucoup d'entre vous, j'utilise des systèmes de contrôle de version, en particulier gith.
Git a l'interface de ligne de commande la plus fonctionnelle et des dizaines, voire des centaines d'applications pour travailler avec lui localement en utilisant une interface graphique qui ne peut exécuter qu'une partie des fonctionnalités de git. Le problème, c'est que j'écris du code depuis 10 ans maintenant, mais je n'ai pas trouvé le client GUI git parfait (qui me convient). Exemple: Github Desktop est récemment sorti. Je l'ai utilisé jusqu'à ce que j'aie besoin de vérifier pour un commit spécifique. Et j'ai vécu la douleur habituelle que cette application ne sait pas comment faire cela. Et encore une fois je suis retourné au terminal (avec autocomplétion pour le git). Et il y a de telles choses dans chaque application GUI pour la gita. Cependant, je ne suis pas venu ici pour les critiquer. Je suis sûr que vous et sans moi avez de nombreuses plaintes à propos de ces applications. J'ai longtemps réfléchi à ce que devrait être une application GUI git idéale. C'étaient de fugaces bribes de désirà partir de laquelle il est difficile d'assembler quelque chose de tout. Et tout récemment, ces bribes de pensées se sont rassemblées en une seule image. Ci-dessous, je décrirai cela dans le format du mandat (tâche technique) sous la forme la plus compréhensible.
Le client GUI Git parfait
Il est important que l'interface ne soit pas super compliquée. Si l'utilisateur ouvre l'application et voit plus de 20 boutons, l'idée est nulle. La plupart des utilisateurs, passant à la console pour travailler avec git, écrivent une commande git status
pour connaître la liste des fichiers avec le statut modifié. Par conséquent, notre application devrait afficher presque tout l'écran une liste de fichiers sous la forme d'une hiérarchie qui ont un statut changé (comme un explorateur / recherche de fichiers). Il inclura tout ce que nous pouvons voir avec la commandegit status
: fichiers modifiés, fichiers non suivis, ajoutés et supprimés (j'ai peut-être oublié un statut). Chaque fichier doit, comme dans la console, être affiché en rouge ou en vert, ce qui indique qu'il a été ajouté au commit. Vous pouvez faire un clic droit sur n'importe quel fichier ou cliquer sur les trois points sur le côté droit de la ligne pour faire apparaître un menu contextuel. Dans le menu contextuel, vous pouvez ajouter un fichier s'il n'est pas ajouté ( git add
commande dans le terminal), réinitialiser s'il est ajouté, supprimer s'il n'est pas dans l'index (nettoyer). Vous pouvez également cliquer avec le bouton droit sur le dossier et ajouter le dossier entier ( git add folder
). La réinitialisation fonctionne de la même manière. Vous pouvez également tout ajouter à l'index avec le petit bouton dans le coin supérieur gauche de l'arborescence des fichiers. Vous pouvez cliquer sur la ligne contenant le fichier pour ouvrir le diff en plein écran.
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. .
C'est tout. Je serai heureux de toute critique et suggestion dans les commentaires. Je vais répondre à la question de savoir pourquoi je partage l'idée ici, mais je ne commencerai tout simplement pas à la mettre en œuvre moi-même. Je suis moi-même engagé dans le développement de jeux, en ce moment je travaille pour Playtika, et pendant mon temps libre je développe une application pour travailler avec SQLite https://sqliteman.dev . Je commencerais volontiers à développer ce client git GUI, mais je n'ai pas le temps. Je serai très heureux si quelqu'un d'autre l'a fait, même si cela ne me dérange pas que quelqu'un le fasse sans mentionner la source de l'idée. Je suis sûr que l'idée ne vaut rien par opposition à la mise en œuvre. Et je serai très heureux si j'ai l'application git GUI de mes rêves.