¿Por qué aprender git cuando hay aplicaciones GUI para GitHub?

80

Dado que GitHub proporciona aplicaciones GUI para Mac y Windows , ¿cuáles son los beneficios de aprender a usar git desde la línea de comandos?

Actualmente estoy usando su aplicación mac para actualizar mis repositorios, y hasta ahora parece cubrir mis necesidades. ¿Qué podría estar perdiendo?

    
pregunta histelheim 02.11.2012 - 03:42

11 respuestas

114

Creo que esta pregunta es solo un caso especial de "¿Por qué debería aprender una CLI para la cual existe una alternativa GUI?". Sospecho que la última pregunta es tan antigua como las GUI, y supongo que hubo muchos intentos de responderla a lo largo de los años. Podría intentar deambular por mi propia respuesta a esta pregunta, pero Neal Stephenson articuló lo que estoy de acuerdo con la "respuesta definitiva" hace más de diez años en su notable ensayo En el principio ... era la línea de comandos .

Mientras que el ensayo aborda muchos aspectos de la computación, e incluso el mismo Stephenson piensa que mucho Ahora que está obsoleto, el ensayo explica de qué manera las CLI son mejores GUI de una manera extremadamente convincente que literalmente cambió mi vida. Es una lectura larga (~ 40 páginas), pero no puedo recomendarlo lo suficiente a cualquiera que haga preguntas como las que usted hizo aquí.

Finalmente, aunque respondería cualquier tipo de pregunta CLI vs GUI de manera similar, creo que mi respuesta es especialmente cierta para tu pregunta específica, ya que de todas las cosas de computadora que elegiste preguntar sobre git . Podría decirse que git es la última herramienta en una lista no muy larga de herramientas informáticas que son verdaderamente dignas de la metáfora del agujero-hawg como se describe en el ensayo de Stephenson. git , como muchas otras cosas de Unix-ish, es una razón para saber las CLI en sí mismas. A veces, a pesar de su errático 'porcelain' ; a veces por eso.

Entonces, sí, definitivamente puedes ser productivo con la GUI de github, ya sea para OSX o incluso en su sitio web. Sí, en realidad es bastante elegante, uso las funciones del sitio a menudo. Pero no, nunca tendrás ese sentimiento divino cuando tu meñique derecho cuelga por encima de un comando git filter-branch para una o dos o más. Si tuviera que mantener solo una cosa de mi experiencia con la informática: los desafíos mentales, las amistades íntimas formadas en un centro de datos a las 2AM, la escalera infinita de competencia para escalar, tocar las vidas de los usuarios y reinar sobre los PB de datos preciosos, la cómoda trabajos y una vida cómoda - mantén solo una cosa - sería ese sentimiento divino.

    
respondido por el Yaniv Aknin 02.11.2012 - 08:04
105

Si todas sus necesidades están cubiertas, increíble, no hay necesidad de profundizar en git, su tiempo sería mejor gastado en aprender algo que realmente necesita.

git es solo una herramienta, cuando necesites hacer algo que no puedas con una aplicación GUI, lo sabrás. Solo ten en cuenta que github! = Git.

    
respondido por el yannis 02.11.2012 - 03:49
55

La mayoría de las funciones solo de CLI solo entran en juego cuando accidentalmente su repositorio se pone en un estado extraño y quiere solucionarlo. Por otro lado, la forma más común de convertir tu repo en un estado extraño es usar funciones avanzadas que no entiendas. Si se adhiere a lo que proporciona la GUI, eso cubrirá sus necesidades el 99% del tiempo.

La otra razón por la que puede querer aprender el CLI es que es la lengua franca de git. Eso significa que mientras muchas personas usan diferentes GUI en diferentes plataformas, si solicita ayuda en StackOverflow o en cualquier otro lugar, es muy probable que la respuesta venga en forma de comandos CLI. Si no conoce el CLI, sus opciones para obtener ayuda serán mucho más limitadas.

    
respondido por el Karl Bielefeldt 02.11.2012 - 04:42
9

Las aplicaciones GUI se basan en interacciones manuales para realizar comportamientos complejos. Esto es genial para configurar proyectos y desarrollar cosas nuevas.

Los beneficios de una interfaz de línea de comandos (CLI) provienen de la capacidad de crear scripts predeterminados que pueden automatizarse. Toda la interfaz gráfica de usuario de GitHub es: algunos buenos gráficos y botones elegantes que llaman la CLI de git.

Lo que la aplicación GUI no hará por usted es actualizar automáticamente el tronco de un repositorio en un servidor todos los días a la 1:30 a.m., pero un trabajo cron que llama a la CLI de git es una manera muy fácil para configurar eso.

Además, cuando se trabaja en un proyecto en un equipo, es conveniente configurar scripts de instalación, scripts de construcción, scripts de implementación y similares para que los compañeros de equipo puedan concentrarse en resolver problemas en lugar de tediosas tareas repetitivas.

    
respondido por el zzzzBov 02.11.2012 - 16:40
6

Otra razón por la cual la CLI podría ser preferible es una cuestión de flujo de trabajo. Muchos marcos se gestionan a través de la línea de comandos. El uso de git a través de la CLI me permite concentrarme en mi proyecto y en el directorio de ese proyecto. Por ejemplo, podría realizar una prueba y luego decidir confirmar los cambios nuevos desde la misma interfaz y ubicación.

    
respondido por el Shigar Kenze 02.11.2012 - 14:33
5

Recientemente, tengo que profundizar en Git para poder ayudar con una migración de SVN a Git. Y lo que aprendí es que las herramientas de línea de comandos de Git no son no la parte complicada de aprender.

Los conceptos e ideas detrás de Git son la parte compleja (y eso no es porque estén mal diseñados, sino simplemente porque son ajenos a la mayoría de las personas que provienen de algún otro VCS centralizado).

Una vez que he comprendido los conceptos, las declaraciones de la línea de comando se volvieron relativamente fáciles. Eso significa que una interfaz de usuario realmente no ayuda a entender Git (a excepción de las operaciones más simples).

    
respondido por el Joachim Sauer 02.11.2012 - 15:15
4

Conocer la CLI es útil para cuando (no si) estás en un entorno donde no puedes acceder a una aplicación GUI.

Un posible escenario: le piden que ayude por un par de días en un proyecto en un lugar cerrado donde es molesto y prolongado incorporar nuevas herramientas al sistema. Sólo utilizan CLI. Su productividad solo se vio afectada porque necesita aprender todo de nuevo.

    
respondido por el grumpasaurus 02.11.2012 - 15:08
2

Una razón para aprender git de línea de comandos es que la mayoría de la documentación está escrita para ese entorno. Además, si haces una pregunta: "¿cómo hago X con git?", Es probable que la respuesta contenga comandos de la línea de comandos.

    
respondido por el Nemanja Trifunovic 02.11.2012 - 15:27
1

Uno de los principales problemas con el uso de una GUI frente a la línea de comandos es que, en la mayoría de los casos, no puede tener el mismo control sobre su proceso. Por ejemplo, la aplicación GitHub es excelente en términos de facilidad de uso para una gran cantidad de flujos de trabajo de git, pero aún podría ser engorroso para los procesos avanzados de git.

A modo de ejemplo, aquí hay algunas cosas que no he descubierto cómo utilizar la aplicación GitHub (otra cosa a tener en cuenta es que cada GUI también tiene una curva de aprendizaje).

  • Rebasar confirmaciones
  • Push / Pull / Fetch individualmente (en GitHub se agrupan en un solo comando de "sincronización" que puede causar problemas algunas veces)
  • enmendando compromisos

Finalmente, las CLI permiten a los usuarios usar estas herramientas cuando realizan scripts.

    
respondido por el KLee1 02.11.2012 - 18:00
0

No conozco GitHub para Mac, pero la aplicación de Windows solo realiza las tareas más comunes: agregar, cometer, empujar, jalar, etc. Las tareas más complejas como git merge --no-ff deben realizarse desde la línea de comandos.

También, hay casos con git cuando la GUI no está disponible, por ejemplo. cuando SSHing en servidores remotos.

Pero de lo contrario, si la GUI le brinda todo lo que necesita, el aprendizaje de la línea de comandos puede ser una pérdida de tiempo. Mi trabajo utiliza TortoiseSVN en un entorno solo para Windows, y no he tenido que tocar la línea de comandos SVN ni una sola vez.

    
respondido por el ikh 04.01.2014 - 17:08
0

Acabo de enterarme de un caso en el que CLI puede ser mejor que GUI. Para ilustrar esto, tomé un ejemplo de un libro git: control de versiones para todos.

Cuando quiera compartir en una intranet, puede usar:

  1. servidor Gitolite
  2. Directorio de recursos compartidos con repositorios simples

Mira los pasos para crear un repositorio simple.

Creando un repositorio simple en modo CLI

El comando para crear un repositorio simple sería el mismo que usaste para clone un repositorio, excepto el parámetro --bare, que marca la diferencia. %código% La ejecución del código anterior en su consola debe crear un clon completo de nuestro repositorio de Workbench en su carpeta compartida común llamada generic_share.

Creando un repositorio simple en modo GUI

Crear un clon simple desde un repositorio ya existente usando GUI es un proceso fácil. Todo lo que necesitas hacer es:

  1. Copie el directorio .git del repositorio existente y péguelo con un name_name.git diferente (sea cual sea el nombre que quiera darle a su repositorio nuevo) fuera del repositorio. En nuestro caso, tenemos un repositorio distinto llamado Workbench en C: \ Users \ raviepic3 \ Desktop \ dentro del cual tenemos content.docx. Y ahora quiero crear un nuevo repositorio simple a partir de este uso de GUI. Copiaré C: \ Users \ raviepic3 \ Desktop \ Workbench.git y lo pegaré como C: \ generic_share \ Bare_Workbench.git.

  2. Abra el git clone --bare C:\Users\raviepic3\Desktop\Workbench C:\generic_share\ Bare_Workbench dentro de Bare_Workbench.git con un editor de texto y encuentre el línea que dice config file y reemplaza la cadena falsa por verdadera.

  3. Guardar y salir.

En la GUI, tienes que hacer tantos clics y recordar qué archivo se va a editar. En CLI, un simple comando lo hace todo por ti.

    
respondido por el sid smith 01.06.2014 - 07:30

Lea otras preguntas en las etiquetas