Por que aprender git quando existem aplicativos de interface gráfica para o GitHub?

84

Dado que o GitHub fornece aplicativos GUI para Mac e Windows , quais são os benefícios de aprender a usar o git na linha de comando?

Atualmente, estou usando o aplicativo mac para atualizar meus repositórios e, até agora, parece cobrir minhas necessidades. O que eu poderia estar perdendo?

histelheim
fonte
15
Não se esqueça do gitk, que é uma interface gráfica para o Linux.
DeveloperDon
14
Você está perdendo todos os scripts.
SK-logic
3
@KChaloux, sim, há uma boa razão pela qual a maioria dos aplicativos da GUI não é totalmente programável. E aqueles que são programáveis ​​são simplesmente terríveis (pense em COM e abominações semelhantes).
SK-logic
2
@KChaloux, não, o motivo não é uma qualidade. É realmente difícil criar um aplicativo GUI puro que possa ser script. Todas as abordagens razoáveis ​​que eu conheço são, basicamente, baseadas na introdução de alguma forma de interface de linha de comando - uma CLI no estilo Unix ou uma linguagem de comando baseada em texto ou algum protocolo binário que é essencialmente a mesma coisa que uma linguagem de comando , veja COM. Mas a melhor abordagem, é claro, é ter um núcleo comum que seja acessível através de várias ferramentas CLI e de GUIs. O último também pode ser construído na CLI para simplificar.
SK-logic
13
Você não Da mesma forma, você não precisa aprender HTML / CSS porque o Dreamweaver e o Frontpage (ou o que quer que seja agora) existem. Talvez funcione para você em algumas coisas, mas quando alguém não sabe melhor como realmente funciona.
DorkRawk

Respostas:

116

Penso que esta questão é apenas um caso especial de "Por que devo aprender qualquer CLI para a qual exista uma alternativa de GUI?". Suspeito que a última pergunta seja tão antiga quanto as GUIs e suponho que houve muitas tentativas de respondê-la ao longo dos anos. Eu poderia tentar entender minha própria resposta a essa pergunta, mas Neal Stephenson articulou o que eu concordo como a "resposta final" mais de dez anos atrás em seu notável ensaio No começo ... Era a linha de comando .

Enquanto o ensaio aborda muitos aspectos da computação, e mesmo o próprio Stephenson acha que muitos agora estão obsoletos, o ensaio explica de que maneira as CLIs são melhores GUIs de uma maneira extremamente convincente que literalmente mudou minha vida. É uma leitura longa (~ 40 páginas), mas não posso recomendar o suficiente para quem faz perguntas como as que você fez aqui.

Finalmente, embora eu responda a qualquer tipo de pergunta CLI x GUI de maneira semelhante, acho que minha resposta se aplica especialmente à sua pergunta específica, devido a todas as coisas sobre o computador que você escolheu perguntar git. gité indiscutivelmente a ferramenta mais recente de uma lista não tão longa de ferramentas de computador que são realmente dignas da metáfora do buraco-hawg, conforme descrito no ensaio de Stephenson. git, como várias outras coisas unix-ish, é um motivo para conhecer as CLIs por si só. Às vezes, apesar de sua "porcelana" errática ; às vezes por causa disso.

Então, sim, você pode definitivamente ser produtivo com a GUI do github, seja para OSX ou mesmo apenas no site deles. Sim, na verdade é bastante elegante, eu uso os recursos do site frequentemente. Mas não, você nunca terá esse sentimento divino quando seu mindinho direito estiver acima de um git filter-branchcomando insano por um ou dois anos. Se eu tivesse que manter apenas uma coisa da minha experiência com a computação - os desafios mentais, as amizades íntimas formadas em um datacenter às 2 da manhã, a infinita escada de competência a ser escalada, tocando a vida dos usuários e reinando em PBs de dados preciosos, o confortável empregos e vida confortável - mantenha apenas uma coisa - seria esse sentimento divino.

Yaniv Aknin
fonte
5
Ligação mais acessível para In the Beginning ... era a linha de comando: pauillac.inria.fr/~weis/info/commandline.html
Elias Zamaria
1
Re: obsoleto: essa seria a parte "BeOS as Batmobile", certo?
precisa saber é o seguinte
2
Garrett Birkel atualizou o ensaio "In the Beginning ... Was the Command Line", intercalando seus comentários com o ensaio original de Neal Stephenson. Você pode ler sobre isso aqui .
Gosto de codificar
2
... sim, quem precisa de uma CLI quando você pode criar uma interface GUI usando o Visual Basic. Ótimo para rastrear um endereço IP.
Ei
3
Eu não estava sugerindo 'quanto mais velho é melhor', estava sugerindo que as CLIs são (para muitos casos de hackers) superiores às GUIs. As CLIs também são superiores aos switches binários e patch cords. É por isso que eu uso CLIs. O artigo não é "prova" porque está "em um artigo", é uma prosa com argumentos que articulam o que eu gosto nas CLIs. É antigo, mas o UNIX também, e daí. A propósito, trabalho para o Google, e a esmagadora maioria dos desenvolvedores ao meu redor usa um ambiente de desenvolvimento baseado em CLI (mas não posso falar pelo Google como um todo, é claro).
precisa saber é o seguinte
108

Se todas as suas necessidades forem atendidas, impressionantes, sem a necessidade de se aprofundar no git, seu tempo será melhor gasto para aprender algo que você realmente precisa.

O git é apenas uma ferramenta, quando você precisar fazer algo que não pode com um aplicativo GUI, você saberá. Lembre-se de que github! = Git.

yannis
fonte
1
Eu concordo com você, mas pode haver coisas das quais não estou ciente atualmente, que podem ser úteis para mim se eu estivesse ciente delas. Não?
Histelheim
28
@AronLindberg Sim, provavelmente existem. Mas você está fazendo a pergunta errada: o que você deve gastar tempo investigando são os fluxos de trabalho e os conceitos do git, não a linha de comando. Mesmo se alguém listar todas as funcionalidades que faltam aos aplicativos da GUI, como você saberia se realmente precisa? (também isso é algo que você pode facilmente fazer sozinho, só de olhar para o git documentação)
yannis
//, uma CLI o forçará a pensar um pouco mais sobre os fluxos de trabalho e conceitos, porque toda a organização, escolhas e fluxo ocorrerão em sua cabeça, não nos assistentes e nos menus suspensos.
Nathan Basanese
57

A maioria dos recursos somente da CLI entra em ação quando você acidentalmente coloca seu repositório em um estado estranho e deseja corrigi-lo. Por outro lado, a maneira mais comum de colocar seu repositório em um estado estranho é usar recursos avançados que você não entende. Se você seguir o que a GUI fornece, isso atenderá às suas necessidades 99% do tempo.

A outra razão pela qual você pode querer aprender a CLI é que ela é a língua franca do git. Isso significa que, embora muitas pessoas usem GUIs diferentes em plataformas diferentes, se você pedir ajuda no StackOverflow ou em outro local, a resposta provavelmente virá na forma de comandos da CLI. Se você não conhece a CLI, suas opções para obter ajuda serão muito mais limitadas.

Karl Bielefeldt
fonte
Definitivamente a melhor resposta aqui. Não é filosofia blá-blá-blá.
john cj
//, esse foi meu primeiro pensamento e, embora as respostas filosóficas tenham me atraído, a principal razão pela qual eu uso CLIs é porque elas são muito mais fáceis de raciocinar, padronizar e se comunicar com outras pessoas por meio de texto. Nem todos sabemos como desenhar, mas todos sabemos digitar.
Nathan Basanese
9

Os aplicativos GUI contam com interações manuais para executar comportamentos complexos. Isso é ótimo para configurar projetos e desenvolver coisas novas.

Os benefícios de uma interface de linha de comando (CLI) vêm da capacidade de criar scripts predeterminados que podem ser automatizados. Toda a GUI do GitHub é, são alguns gráficos agradáveis ​​e botões sofisticados que chamam a CLI do git.

O que o aplicativo GUI não fará por você é atualizar automaticamente o tronco de um repositório diariamente em um servidor às 01:30, mas um trabalho cron que chama a CLI do git é uma maneira muito fácil de configurar isso.

Além disso, ao trabalhar em um projeto em equipe, é conveniente configurar scripts de instalação, criar scripts, implantar scripts e afins, para que os colegas possam se concentrar na solução de problemas em vez de tarefas repetitivas e tediosas.

zzzzBov
fonte
tronco? Eu acho que você quer dizer mestre.
Jpmc26
@ jpmc26, eu escrevi isso quando eu era novo no git vindo do SVN, perdoe a terminologia.
ZzzzBov
6

Outro motivo pelo qual a CLI pode ser preferível é uma questão de fluxo de trabalho. Muitas estruturas são gerenciadas através da linha de comando. Usando o git através da CLI, deixe-me manter o foco no meu projeto e nesse diretório do projeto. Por exemplo, eu posso executar um teste e decidir confirmar as novas alterações, todas da mesma interface e local.

Shigar Kenze
fonte
+1; e quanto mais fácil / mais acessível ele for usar, maior a probabilidade de usá-lo nos momentos apropriados (toque em toque em git commit toque em toque em toque) em vez de (toque em iniciar GUI git commit 'confirmação de final de semana')
Abe
5

Recentemente, eu realmente tenho que me aprofundar no Git para poder ajudar com uma migração de SVN para Git. E o que aprendi é que as ferramentas de linha de comando do Git não são a parte complicada de aprender.

Os conceitos e idéias por trás do Git são a parte complexa (e não é porque eles foram mal projetados, mas simplesmente porque são estranhos à maioria das pessoas que vêm de algum outro VCS centralizado).

Depois de entender os conceitos, as instruções reais da linha de comando se tornaram relativamente fáceis. Isso significa que uma interface do usuário não ajuda realmente a entender o Git (exceto as operações mais simples).

Joachim Sauer
fonte
3
Na verdade, os conceitos por trás gitsão tão simples que as pessoas não conseguem entendê-los - estão procurando algo mais difícil.
gahooa
4

Saber que a CLI é útil para quando (e não se) você estiver em um ambiente em que não é possível acessar um aplicativo GUI.

Um cenário em potencial: você é solicitado a ajudar por apenas alguns dias em um projeto em um local fechado, onde é irritantemente difícil e demorado inserir novas ferramentas no sistema. Eles usam apenas CLI. Sua produtividade foi prejudicada porque você precisa aprender tudo de novo.

grumpasaurus
fonte
As respostas de uma frase raramente fornecem muito valor. Você pode, por favor, expandir sua resposta?
Walter
//, ele é o @grumpasaurus. O que você esperava, um soneto?
Nathan Basanese
2

Um motivo para aprender o git da linha de comando é que a maior parte da documentação é escrita para esse ambiente. Além disso, se você fizer uma pergunta: "como faço para X com o git?", É provável que a resposta contenha comandos da linha de comando.

Nemanja Trifunovic
fonte
1

Um dos principais problemas com o uso de uma interface gráfica do usuário versus a linha de comando é que na maioria dos casos você não consegue ter o mesmo controle sobre o seu processo. Por exemplo, o aplicativo GitHub é ótimo em termos de usabilidade para muitos fluxos de trabalho do git, mas ainda pode ser complicado para processos avançados do git.

Como exemplo, aqui estão algumas coisas que eu ainda não descobri como fazer usando o aplicativo GitHub (outra coisa a ser observada é que cada GUI também possui uma curva de aprendizado).

  • Reconstruindo confirmações
  • Push / Pull / Fetch individualmente (no GitHub, eles são agrupados em um único comando "sync" que pode causar problemas algumas vezes)
  • Alterações confirmadas

Por fim, as CLIs permitem que os usuários usem essas ferramentas ao criar scripts.

KLee1
fonte
O último ponto é fundamental para mim. Scripts de construção, ferramentas e servidores raramente têm um usando uma GUI para ter o controle de versão de acesso à GUI. Em vez disso, é preciso usar a linha de comando.
0

Não conheço o GitHub para Mac, mas o aplicativo do Windows executa apenas as tarefas mais comuns - adicionar, confirmar, pressionar, puxar, etc. Tarefas mais complexas, como essas, git merge --no-ffprecisam ser executadas na linha de comando.

Além disso, existem casos com o git quando a GUI não está disponível, por exemplo, quando o SSH está em servidores remotos.

Mas, caso contrário, se a GUI fornecer tudo o que você precisa, aprender a linha de comando pode ser uma perda de tempo. Meu trabalho usa o TortoiseSVN em ambiente somente Windows, e não tive que tocar na linha de comando do SVN nem uma vez.

ikh
fonte
0

Acabei de aprender um caso em que a CLI pode ser melhor que a GUI. Para ilustrar isso, peguei um exemplo de um livro git - version control para todos.

Quando você deseja compartilhar através de uma intranet, pode usar:

  1. Servidor Gitolite
  2. Diretório de compartilhamento comum com repositórios vazios

Veja as etapas para criar um repositório simples.

Criando um repositório vazio no modo CLI

O comando para criar um repositório vazio seria o mesmo que você usou para clonar um repositório, exceto o parâmetro --bare, que faz toda a diferença. git clone --bare C:\Users\raviepic3\Desktop\Workbench C:\generic_share\ Bare_Workbench A execução do código anterior no console deve criar um clone simples do repositório do Workbench na sua pasta compartilhada comum chamada generic_share.

Criando um repositório vazio no modo GUI

Criar um clone simples a partir de um repositório já existente usando a GUI é um processo fácil. Tudo que você precisa fazer é:

  1. Copie o diretório .git do repositório existente e cole-o com um different_name.git (qualquer nome que você queira atribuir ao seu novo repositório bare) fora do repositório. No nosso caso, temos um repositório não bare chamado Workbench em C: \ Users \ raviepic3 \ Desktop \ dentro do qual temos content.docx. E agora eu quero criar um novo repositório simples usando esta GUI. Copio C: \ Users \ raviepic3 \ Desktop \ Workbench.git e colo-o como C: \ generic_share \ Bare_Workbench.git.

  2. Abra o config fileBare_Workbench.git interno com um editor de texto e encontre a linha que diz bare = falsee substitua a string false por true.

  3. Salvar e sair.

Na GUI, você precisa fazer muitos cliques e lembrar qual arquivo deve ser editado. Na CLI, um comando simples faz tudo por você.

sid smith
fonte