I am a game and mobile application developer. I've written quite a bit of code in C ++ and Swift. And, like many of you, I use version control systems, in particular, gith.
Git has the most functional command-line interface and dozens if not hundreds of applications for working with it locally using a graphical interface, which are able to perform only part of the git's functionality. The trouble is, I've been writing code for 10 years now, but I haven't found the perfect (suitable for me) git GUI client. Example: Github Desktop recently came out. I used it until I needed to checkout for a specific commit. And I experienced the usual pain that this application does not know how to do this. And again I returned to the terminal (with autocompletion for the git). And such things are in every GUI application for the gita. However, I did not come here to criticize them. I am sure that you and without me have many complaints about these applications. I thought for a long time about what an ideal git GUI application should be. They were fleeting scraps of desirefrom which it is difficult to assemble something whole. And quite recently, these scraps of thoughts have gathered in a single picture. Below I will describe this in the format of the TOR (technical task) in the most understandable form.
The perfect Git GUI client
It is important that the interface is not super complicated. If a user opens the app and sees more than 20 buttons, then the idea sucks. Most of the users, switching to the console to work with git, write a command git status
to find out the list of files with the changed status. Therefore, our application should show almost the entire screen a list of files in the form of a hierarchy that have a changed status (similar to the explorer / finder). It will include everything that we can see with the commandgit status
: changed files, untracked files, added and removed (maybe I forgot some status). Each file should, as in the console, be displayed either in red or green, which indicates that it has been added to the commit. You can right-click on any file or click on the three dots on the right side of the line to bring up a context menu. In the context menu, you can add a file if it is not added ( git add
command in the terminal), reset if it is added, delete if it is not in the index (clean). You can also right-click on the folder and add the entire folder ( git add folder
). Reset works the same way. You can also add everything to the index with a small button in the upper left corner of the file tree. You can click on the line with the file to open the diff on it in full screen.
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. .
It's all. I will be glad to any criticism and suggestions in the comments. I will answer the question why I am sharing the idea here, but I just will not start implementing it myself. I myself am engaged in game development, at the moment I work at Playtika, and in my free time I develop an application for working with SQLite https://sqliteman.dev . I myself would gladly start developing this git GUI client, but I don't have time. I will be very happy if someone else did it, while I do not mind if someone does it without mentioning the source of the idea. I am sure that the idea is not worth anything as opposed to the implementation. And I will be very happy if I have the git GUI application of my dreams.