Perché imparare git quando ci sono app GUI per GitHub?


84

Dato che GitHub fornisce app GUI sia per Mac che per Windows , quali sono i vantaggi di imparare a usare git dalla riga di comando?

Attualmente sto usando la loro app per Mac per aggiornare i miei repository, e finora sembra coprire le mie esigenze. Cosa potrei perdere?


15
Non dimenticare gitk che è una GUI per Linux.
Sviluppatore:

14
Ti mancano tutti gli script.
SK-logic,

3
@KChaloux, sì, c'è un'ottima ragione per cui la maggior parte delle app della GUI non sono affatto scriptabili. E quelli che sono programmabili sono semplicemente orribili (pensa a COM e simili abominazioni).
SK-logic,

2
@KChaloux, no il motivo non è una qualità. È davvero difficile creare un'applicazione GUI pura tramite script. Tutti gli approcci ragionevoli che conosco sono fondamentalmente basati sull'introduzione di una forma di interfaccia a riga di comando - una CLI in stile Unix, o un linguaggio di comando basato su testo o un protocollo binario che è essenzialmente la stessa cosa di un linguaggio di comando , vedi COM. Ma l'approccio migliore, ovviamente, è quello di avere un nucleo comune che sia accessibile tramite vari strumenti della CLI e dalle GUI. Quest'ultimo può anche essere basato sulla CLI per semplicità.
SK-logic,

13
Non Allo stesso modo non è necessario imparare HTML / CSS perché Dreamweaver e Frontpage (o qualunque cosa sia ora) esistono. Forse funzionerà per te per alcune cose, ma quando non lo fa qualcuno sa meglio come funziona davvero.
DorkRawk,

Risposte:


116

Penso che questa domanda sia solo un caso speciale di "Perché dovrei imparare qualsiasi CLI per cui esiste un'alternativa alla GUI?". Sospetto che quest'ultima domanda sia vecchia quanto le GUI, e presumo che ci siano stati molti tentativi di rispondere nel corso degli anni. Potrei tentare di sfogliare la mia risposta a questa domanda, ma Neal Stephenson ha articolato quella che condivido come "la risposta definitiva" più di dieci anni fa nel suo straordinario saggio In the Beginning ... Was the Command Line .

Mentre il saggio tocca molti aspetti dell'informatica, e anche se lo stesso Stephenson pensa che gran parte di esso sia ormai obsoleto, il saggio spiega in che modo le CLI sono migliori GUI in un modo estremamente avvincente che ha letteralmente cambiato la mia vita. È una lettura lunga (~ 40 pagine), ma non posso raccomandarlo abbastanza a chiunque faccia domande come te.

Alla fine, anche se risponderei a qualsiasi tipo di domanda tra CLI e GUI in modo simile, penso che la mia risposta sia particolarmente vera per la tua domanda specifica poiché di tutte le cose che hai scelto di porre al computer git. gitè senza dubbio l'ultimo strumento in un elenco non così lungo di strumenti informatici che sono veramente degni della metafora del falco falco come descritto nel saggio di Stephenson. git, come molte altre cose di Unix, è un motivo per conoscere le CLI in sé. A volte nonostante la sua "porcellana" irregolare ; a volte a causa sua.

Quindi sì, puoi sicuramente essere produttivo con la GUI di github, per OSX o anche solo sul loro sito web. Sì, in realtà è piuttosto elegante, utilizzo spesso le funzionalità del sito. Ma no, non avrai mai quella sensazione divina mentre il tuo mignolo destro pende sopra un git filter-branchcomando folle per un eone o due. Se dovessi mantenere solo una cosa dalla mia esperienza con l'informatica: le sfide mentali, le amicizie strette formate in un datacenter alle 2 del mattino, l'infinita scala di competenze da scalare, toccando la vita degli utenti e regnando su PB di dati preziosi, il cushy lavori e vita comoda - mantieni solo una cosa - sarebbe quella sensazione divina.


5
Link più accessibile a In the Beginning ... Was the Command Line: pauillac.inria.fr/~weis/info/commandline.html
Elias Zamaria

1
Ri: obsoleto: quella sarebbe la parte di "BeOS come Batmobile", giusto?
naught101

2
Garrett Birkel ha aggiornato il saggio "In the Beginning ... Was the Command Line" intervallando i suoi commenti con il saggio originale di Neal Stephenson. Puoi leggerlo qui .
Mi piace programmare l'

2
... sì, chi ha bisogno di una CLI quando è possibile creare un'interfaccia GUI usando Visual Basic. Ottimo per cose come il monitoraggio di un indirizzo IP.
Ehi,

3
Non stavo suggerendo "più vecchio è meglio", stavo suggerendo che le CLI sono (per molti casi di hacker) superiori alle GUI. Le CLI sono anche superiori agli switch binari e ai cavi patch. Ecco perché utilizzo le CLI. L'articolo non è "prova" perché è "in un articolo", è in prosa con argomenti che articolano ciò che mi piace delle CLI. È vecchio, ma anche UNIX, e allora. A proposito, lavoro per Google e la stragrande maggioranza degli sviluppatori intorno a me utilizza un ambiente di sviluppo basato sulla CLI (ma ovviamente non posso parlare per Google nel suo insieme).
Yaniv Aknin,

108

Se tutte le tue esigenze sono coperte, fantastiche, non c'è bisogno di scavare più a fondo in git, il tuo tempo sarebbe meglio speso per imparare qualcosa di cui hai effettivamente bisogno.

git è solo uno strumento, quando dovrai fare qualcosa che non puoi con un'app GUI, lo saprai. Tieni a mente quel github! = Git.


1
Sono d'accordo con te, ma potrebbero esserci cose di cui non sono a conoscenza al momento, che potrebbero essermi utili se ne fossi a conoscenza. No?
histelheim,

28
@AronLindberg Sì, probabilmente ci sono. Ma stai ponendo la domanda sbagliata, cosa dovresti dedicare del tempo a indagare sui flussi di lavoro e sui concetti di Git, non sulla riga di comando. Anche se qualcuno ti elenca tutte le funzionalità mancanti nelle app della GUI, come faresti a sapere se ne hai davvero bisogno? (anche questo è qualcosa che puoi facilmente fare da solo, semplicemente guardando la documentazione di
Git

//, una CLI ti costringerà a pensare un po 'di più ai flussi di lavoro e ai concetti, perché tutta l'organizzazione, le scelte e il flusso accadranno nella tua testa, non nelle procedure guidate e nei menu a discesa.
Nathan Basanese,

57

La maggior parte delle funzionalità solo della CLI entrano in gioco solo quando accidentalmente si mette il repository in uno stato strano e si desidera risolverlo. D'altra parte, il modo più comune per riportare il repository in uno stato strano è utilizzare funzionalità avanzate che non si capiscono. Se ti attieni a ciò che fornisce la GUI, questo coprirà le tue esigenze il 99% delle volte.

L'altra ragione per cui potresti voler imparare la CLI è che è la lingua franca di git. Ciò significa che, sebbene molte persone utilizzino diverse GUI su piattaforme diverse, se chiedi aiuto su StackOverflow o altrove, è molto probabile che la risposta arrivi sotto forma di comandi CLI. Se non conosci la CLI, le tue opzioni per ottenere aiuto saranno molto più limitate.


Sicuramente la migliore risposta qui. Non filosofia blah-blah-blah.
john cj,

//, Questo è stato il mio primo pensiero e, sebbene le risposte filosofiche mi siano piaciute, la ragione principale per cui utilizzo le CLI è perché sono molto più facili da ragionare, standardizzare e comunicare agli altri tramite il testo. Forse non tutti sappiamo come disegnare, ma sappiamo tutti come scrivere.
Nathan Basanese,

9

Le applicazioni della GUI si basano su interazioni manuali per eseguire comportamenti complessi. Questo è ottimo per creare progetti e sviluppare nuove cose.

I vantaggi di un'interfaccia a riga di comando (CLI) derivano dalla capacità di creare script predefiniti che possono essere automatizzati. Tutta la GUI di GitHub è, è una bella grafica e pulsanti fantasiosi che chiamano la CLI git.

Quello che l'app GUI non farà per te è aggiornare automaticamente il trunk di un repository su un server ogni giorno alle 1:30, ma un cron job che chiama la CLI git è un modo davvero semplice per configurarlo.

Inoltre, quando si lavora su un progetto in un gruppo, è conveniente impostare script di installazione, creare script, distribuire script e simili in modo che i compagni di squadra possano concentrarsi sulla risoluzione dei problemi anziché su noiose attività ripetitive.


tronco? Penso che intendi padrone.
jpmc26,

@ jpmc26, ho scritto questo quando ero nuovo di Git proveniente da SVN, scusate la terminologia.
zzzzBov

6

Un altro motivo per cui la CLI potrebbe essere preferibile è una questione di flusso di lavoro. Molti framework sono gestiti dalla riga di comando. L'uso di git tramite l'interfaccia della riga di comando mi consente di rimanere concentrato sul mio progetto e nella relativa directory di progetto. Ad esempio, potrei eseguire un test e quindi decidere di eseguire il commit delle nuove modifiche dalla stessa interfaccia e posizione.


+1; e più è facile / più accessibile da usare, più è probabile che lo utilizzi nei momenti appropriati (tocca tocca tocca commetti tocca tocca tocca) invece di (tocca tocca avvia GUI git commit 'commit di fine settimana')
Abe,

5

Di recente devo davvero scavare in Git per essere in grado di aiutare con una migrazione da SVN a Git. E la cosa che ho imparato è che gli strumenti da riga di comando Git non sono la parte complicata da imparare.

I concetti e le idee alla base di Git sono la parte complessa (e non perché siano mal progettati, ma semplicemente perché sono estranei alla maggior parte delle persone che provengono da altri VCS centralizzati).

Dopo aver compreso i concetti, le istruzioni della riga di comando effettive sono diventate relativamente semplici. Ciò significa che un'interfaccia utente non aiuta davvero a comprendere Git (ad eccezione delle operazioni più semplici).


3
In realtà, i concetti sottostanti gitsono così semplici che le persone non riescono a capirli - stanno cercando qualcosa di più difficile.
gahooa,

4

Conoscere l'interfaccia della riga di comando è utile quando (non se) ci si trova in un ambiente in cui non è possibile accedere a un'app GUI.

Uno scenario potenziale: ti viene chiesto di dare una mano per un paio di giorni su un progetto in un luogo chiuso dove è fastidiosamente difficile e lungo ottenere nuovi strumenti nel sistema. Usano solo CLI. La tua produttività ha appena colpito perché devi imparare di nuovo tutto da capo.


Le risposte a una frase raramente forniscono molto valore. Puoi per favore espandere la tua risposta?
Walter,

//, è il @grumpasaurus. Cosa ti aspettavi, un sonetto?
Nathan Basanese,

2

Un motivo per imparare git da riga di comando è che la maggior parte della documentazione è scritta per quell'ambiente. Inoltre, se fai una domanda: "come faccio a fare X con git?", È probabile che la risposta conterrà i comandi della riga di comando.


1

Uno dei principali problemi con l'utilizzo di una GUI rispetto alla riga di comando è che non è possibile avere lo stesso controllo sul processo, nella maggior parte dei casi. Ad esempio, l'applicazione GitHub è eccezionale in termini di usabilità per molti flussi di lavoro git, ma potrebbe essere comunque ingombrante per i processi git avanzati.

Ad esempio, ecco alcune cose che non ho capito come fare usando l'applicazione GitHub (un'altra cosa da notare è che ogni GUI ha anche una curva di apprendimento).

  • Rebasing si impegna
  • Push / Pull / Fetch singolarmente (in GitHub sono raggruppati in un singolo comando "sync" che potrebbe causare problemi alcune volte)
  • La modifica si impegna

Infine, le CLI consentono agli utenti di utilizzare questi strumenti durante gli script.


L'ultimo punto è abbastanza chiave per me. Costruire script, strumenti e server raramente ne hanno uno che usa una GUI per avere il controllo della versione di accesso alla GUI. Bisogna invece usare la riga di comando.

0

Non conosco GitHub per Mac, ma l'app di Windows esegue solo le attività più comuni: aggiunta, commit, push, pull, ecc. Attività più complesse come git merge --no-ffdevono essere eseguite dalla riga di comando.

Inoltre, ci sono casi con git quando la GUI non è disponibile, ad esempio quando SSHing nei server remoti.

Altrimenti, se la GUI ti offre tutto ciò di cui hai bisogno, l'apprendimento della riga di comando potrebbe essere una perdita di tempo. Il mio lavoro usa TortoiseSVN in ambiente solo Windows e non ho dovuto toccare la riga di comando SVN nemmeno una volta.


0

Ho appena imparato un caso in cui la CLI può essere migliore della GUI. Per illustrare questo, ho preso un esempio da un libro git - controllo della versione per tutti.

Quando si desidera condividere su una rete Intranet, è possibile utilizzare:

  1. Server Gitolite
  2. Directory di condivisione comune con repository nudi

Guarda i passaggi per la creazione di un repository nudo.

Creazione di un repository nudo in modalità CLI

Il comando per la creazione di un repository nudo sarebbe uguale a quello utilizzato per clonare un repository ad eccezione del parametro --bare, che fa la differenza. git clone --bare C:\Users\raviepic3\Desktop\Workbench C:\generic_share\ Bare_Workbench L'esecuzione del codice precedente nella tua console dovrebbe creare un clone nudo del nostro repository Workbench nella tua cartella condivisa comune chiamato generic_share.

Creazione di un repository nudo in modalità GUI

La creazione di un clone nudo da un repository già esistente mediante la GUI è un processo semplice. Tutto quello che devi fare è:

  1. Copia la directory .git dal repository esistente e incollala con un diverso_name.git (qualunque sia il nome che vuoi dare al tuo nuovo repository nudo) all'esterno del repository. Nel nostro caso abbiamo un repository non nudo chiamato Workbench in C: \ Users \ raviepic3 \ Desktop \ all'interno del quale abbiamo content.docx. E ora voglio creare un nuovo repository nudo da questo usando la GUI. Copierò C: \ Users \ raviepic3 \ Desktop \ Workbench.git e lo incollerò come C: \ generic_share \ Bare_Workbench.git.

  2. Apri l' config fileinterno Bare_Workbench.git con un editor di testo e trova la riga che dice bare = falsee sostituisci la stringa false con true.

  3. Salva ed esci.

Nella GUI, devi fare così tanti clic e ricordare quale file deve essere modificato. Nella CLI, un semplice comando fa tutto per te.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.