Sou desenvolvedor de jogos e aplicativos móveis. Eu escrevi um pouco de código em C ++ e Swift. E, como muitos de vocês, eu uso sistemas de controle de versão, em particular, o gith.
Git tem a interface de linha de comando mais funcional e dezenas, senão centenas de aplicativos para trabalhar com ele localmente usando uma interface gráfica, que são capazes de executar apenas parte da funcionalidade do git. O problema é que estou escrevendo código há 10 anos, mas não encontrei o cliente GUI git perfeito (adequado para mim). Exemplo: Github Desktop foi lançado recentemente. Usei-o até precisar fazer o checkout de um commit específico. E eu experimentei a dor usual que este aplicativo não sabe fazer isso. E voltei ao terminal novamente (com autocompletar para o git). E existem essas coisas em todos os aplicativos GUI para o gita. Porém, não vim aqui para criticá-los. Tenho certeza de que você e sem mim têm muitas reclamações sobre esses aplicativos. Eu pensei por um longo tempo sobre o que um aplicativo GUI git ideal deveria ser. Eles eram fragmentos fugazes de desejoa partir do qual é difícil montar algo inteiro. E bem recentemente, esses fragmentos de pensamentos se reuniram em uma única imagem. Abaixo, descreverei isso no formato do TOR (tarefa técnica) da forma mais compreensível.
O cliente GUI Git perfeito
É importante que a interface não seja supercomplicada. Se o usuário abre o aplicativo e vê mais de 20 botões, a ideia é uma merda. A maioria dos usuários, alternando para o console para trabalhar com git, escreve um comando git statuspara descobrir a lista de arquivos com status alterado. Portanto, nosso aplicativo deve mostrar em quase toda a tela uma lista de arquivos na forma de uma hierarquia que possuem um status alterado (semelhante ao explorer / finder). Irá incluir tudo o que podemos ver com o comandogit status: arquivos alterados, arquivos não rastreados, adicionados e removidos (talvez eu tenha esquecido algum status). Cada arquivo deve, como no console, ser exibido em vermelho ou verde, o que indica que ele foi adicionado ao commit. Você pode clicar com o botão direito em qualquer arquivo ou clicar nos três pontos do lado direito da linha para abrir um menu de contexto. No menu de contexto, você pode adicionar um arquivo se não for adicionado ( git addcomando no terminal), redefini-lo se for adicionado, deletar se não estiver no índice (limpar). Você também pode clicar com o botão direito na pasta e adicionar a pasta inteira ( git add folder). O reset funciona da mesma maneira. Você também pode adicionar tudo ao índice com um pequeno botão no canto superior esquerdo da árvore de arquivos. Você pode clicar na linha com o arquivo para abrir a comparação em tela cheia.
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. .
É tudo. Terei todo o gosto em quaisquer críticas e sugestões nos comentários. Vou responder à pergunta por que estou compartilhando a ideia aqui, mas não vou começar a implementá-la sozinho. Eu próprio me dedico ao desenvolvimento de jogos, atualmente trabalho para a Playtika, e nas horas vagas desenvolvo um aplicativo para trabalhar com SQLite https://sqliteman.dev . Eu mesmo gostaria de começar a desenvolver este cliente GUI git, mas não tenho tempo. Ficarei muito feliz se outra pessoa o fizer, embora não me importe se alguém o fizer sem mencionar a origem da ideia. Tenho certeza que a ideia não vale nada diferente da implementação. E ficarei muito feliz se tiver o aplicativo git GUI dos meus sonhos.