2011-03-09 11 views

Respuesta

1

Como el comando se puede usar para hacer dos acciones, "tiene sentido" usar la palabra clave "pago y envío".

Las dos acciones son:

  • Restablecimiento de modificaciones en un archivo para la confirmación anterior ID
  • El cambio a una rama

También puede utilizar el '-' argumento cuando quiere diferenciar una ID de confirmación de una rama con el nombre

6

Es un buen nombre porque cuando visita una sucursal, le está pidiendo al repositorio que se la proporcione (como si estuviera "revisando") libros de una biblioteca) todos los archivos apropiados en su última revisión estados dentro de esa rama como su copia de trabajo.

No existe realmente un problema con git checkout que tenga "otros significados" aquí. El comando le proporciona un archivo individual o un conjunto de archivos (léase: "una rama") en el estado de revisión X. Si considera que "revertir" o no le falta el punto más grande es que git checkout es flexible y un poco general. En ambos casos, es comprobando cierta cantidad de estado del repositorio y configurándolo como su copia de trabajo, listo para ser editado.

+1

Mi problema con el término "pago y envío" es que implica que está obligado a facturar más tarde. Al igual que la metáfora de la biblioteca, tomas prestado un libro y luego lo traes de vuelta más tarde. U otro software de control de origen, donde el control tiene el mismo significado: tener acceso temporal (tal vez exclusivo) a un archivo que se debe abandonar cuando se retira más tarde. –

1

checkout se refiere a la actualización del archivo en el árbol de trabajo. Revertir también significa actualizar el archivo en el árbol de trabajo a su confirmación anterior. Entonces, en mi opinión, es más realista tener un comando para actualizar o revertir usando git checkout.

12

Veo que la mayoría de las demás respuestas explican lo que git checkout hace y por qué "checkout" podría ser una forma razonable de describirlo. Sin embargo, aunque me encanta git muy caro, esto toca en dos puntos graves de la frustración que surgen cuando estoy tratando de ayudar a la gente a entender el sistema:

  1. git checkout hace dos cosas muy distintas, y sería útil para los recién llegados si fueran comandos separados.

  2. ¡Un cínico podría sugerir que la terminología de git se eligió deliberadamente para confundir a las personas procedentes de CVS y Subversion! El que mencionas (checkout) es un gran ejemplo. Otro es commit, que es completamente local en git y totalmente dependiente del servidor en CVS/SVN; la terminología de darcs de "registro" habría requerido menos desaprendizaje para las personas nuevas en git. El otro ejemplo que me gusta es el mensaje "necesita actualización" que se ve en git, lo que realmente significa "needs to be committed" :)

Por supuesto, siempre se podría utilizar una interfaz diferente a git, como easy git, iolaus, etc.pero la mayoría de la gente tendrá que aprender los comandos estándar eventualmente, así que solo tienes que acostumbrarte a que algunos de ellos reciban un nombre bastante sorprendente.

Estoy seguro de que hay razones históricas de los nombres de estos distintos comandos de Git, pero habría sido útil si diferentes palabras fueron elegidos ...


Actualizar:VonC enlaces en los comentarios al an answer with a neat alias to make git checkout safer en cualquiera de sus dos usos;)

+0

+1000: 100% de acuerdo. Más información sobre los peligros de la facturación: http://stackoverflow.com/questions/2961240/get-back-the-changes-after-accidental-checkout/2961348#2961348 – VonC

+0

@VonC: gracias. ¡Me gusta el idioma del punto de control! –

+0

@VonC: sobre este tema, pensé que podría interesarte una nueva publicación de blog sobre [la terminología de git confusa] (http://longair.net/blog/2012/05/07/the-most-confusing- git-terminology /) que agrega algunos ejemplos más. –

Cuestiones relacionadas