tipos tag practices notes etiquetas delete crear commits best git github version-control repository

tag - github release notes



Proyecto vs Repositorio en GitHub (6)

En GitHub, ¿cuál es la diferencia conceptual entre un proyecto (que se puede crear dentro de un repositorio) y un repositorio?

He visto varias preguntas similares ( here , here y here ) en SO, pero ninguna de ellas explica qué es un proyecto de GitHub, qué es un repositorio de GitHub y cuándo usar cada una de ellas.

Agradecería si alguien puede explicar cada término y proporcionar un ejemplo de cuándo usar / crear cada uno. Por ejemplo, si tengo varias aplicaciones prototipo, todas independientes entre sí, ¿qué creo para administrar de manera organizada el código fuente de todas ellas?


Hecho 1: Proyectos y repositorios siempre fueron sinónimos en GitHub.

Hecho 2: Este ya no es el caso.

Hay mucha confusión sobre repositorios y proyectos. En el pasado, ambos términos se usaban de manera bastante intercambiable por los usuarios y la propia documentación de GitHub. Esto se refleja en algunas de las respuestas y comentarios que explican las sutiles diferencias entre esos términos y cuándo se prefirió uno sobre el otro. La diferencia siempre fue sutil, por ejemplo, como el rastreador de problemas como parte del proyecto pero no como parte del repositorio, que podría considerarse estrictamente git, etc.

Ya no.

Actualmente, los repositorios y proyectos se refieren a diferentes tipos de entidades que tienen API separadas :

Desde entonces, ya no es correcto llamar al repositorio un proyecto o viceversa. Tenga en cuenta que a menudo se confunde en la documentación oficial y es lamentable que se haya elegido un término que ya se usaba ampliamente como el nombre de la nueva entidad, pero este es el caso y tenemos que vivir con eso.

La consecuencia es que los repositorios y los proyectos generalmente se confunden y cada vez que lees sobre proyectos de GitHub tienes que preguntarte si realmente se trata de proyectos o repositorios. Si hubieran elegido otro nombre o una abreviatura como "proj", entonces podríamos saber que lo que se discute es el nuevo tipo de entidad, un objeto preciso con propiedades concretas o un tipo de cosita proyectil tipo repositorio.

El término que generalmente no es ambiguo es "junta de proyecto" .

¿Qué podemos aprender de la API?

El primer punto final en la documentación de la API de proyectos:

se describe como: Lista de proyectos de repositorio . Significa que un repositorio puede tener muchos proyectos. Entonces esos dos no pueden significar lo mismo. Incluye respuesta si los proyectos están deshabilitados :

{ "message": "Projects are disabled for this repo", "documentation_url": "https://developer.github.com/v3" }

lo que significa que algunos repos pueden tener proyectos deshabilitados. Nuevamente, eso no puede ser lo mismo cuando un repositorio puede tener proyectos deshabilitados.

Hay otros puntos finales interesantes:

  • Crear un proyecto de repositorio - POST /repos/:owner/:repo/projects
  • Crear un proyecto de organización - POST /orgs/:org/projects

pero no hay

  • Crear un proyecto de usuario - POST /users/:user/projects

Lo que nos lleva a otra diferencia:

1. Los repositorios pueden pertenecer a usuarios u organizaciones
2. Los proyectos pueden pertenecer a repositorios u organizaciones

o, lo que es más importante:

1. Los proyectos pueden pertenecer a repositorios pero no al revés
2. Los proyectos pueden pertenecer a organizaciones pero no a usuarios
3. Los repositorios pueden pertenecer a organizaciones y usuarios

Ver también:

Sé que es confuso. Traté de explicarlo con la mayor precisión posible.


Con respecto al vocabulario git, un Proyecto es la carpeta en la que vive el contenido (archivos) real. Mientras que Repository (repo) es la carpeta dentro de la cual git mantiene el registro de cada cambio realizado en la carpeta del proyecto . Pero en un sentido general, estos dos pueden considerarse iguales. Proyecto = Repositorio


En general, en GitHub, 1 repositorio = 1 proyecto . Por ejemplo: https://github.com/spring-projects/spring-boot . Pero no es una regla difícil.

1 repositorio = muchos proyectos . Por ejemplo: https://github.com/donhuvy/java_examples

1 proyectos = muchos repositorios . Por ejemplo: https://github.com/zendframework/zendframework (1 proyecto llamado Zend Framework 3 tiene 61 + 1 = 62 repositorios, ¿no crees? Vamos a contar los módulos de Zend Frameworks + repositorio principal)

Estoy totalmente de acuerdo con el comentario de @Brandon Ibbotson :

Un repositorio de GitHub es solo un "directorio" donde pueden existir carpetas y archivos.


Esta es mi comprensión personal sobre el tema.

Para un proyecto, podemos hacer el control de versiones por diferentes repositorios. Y para un repositorio, puede administrar un proyecto completo o parte de proyectos.

En cuanto a su proyecto (varias aplicaciones prototipo que son independientes de cada una de ellas). Puede gestionar el proyecto por un repositorio o por varios repositorios, la diferencia:

  1. Gestionar por un repositorio. Si se cambia una de las aplicaciones, todo el proyecto (todas las aplicaciones) se comprometerá con una nueva versión.

  2. Gestionado por varios repositorios. Si se cambia una aplicación, solo afectará al repositorio que administra la aplicación. La versión para otros repositorios no se modificó.


GitHub introdujo recientemente una nueva característica llamada github.com/blog/… . Esto proporciona un tablero visual que es típico de muchas herramientas de gestión de proyectos:

Un Repository como se documenta en GitHub:

Un repositorio es el elemento más básico de GitHub. Son más fáciles de imaginar como la carpeta de un proyecto. Un repositorio contiene todos los archivos del proyecto (incluida la documentación) y almacena el historial de revisión de cada archivo. Los repositorios pueden tener múltiples colaboradores y pueden ser públicos o privados.

Un Project como se documenta en GitHub:

Los tableros de proyectos en GitHub lo ayudan a organizar y priorizar su trabajo. Puede crear paneles de proyectos para trabajos de características específicas, hojas de ruta completas o incluso publicar listas de verificación. Con los paneles de proyectos, tiene la flexibilidad de crear flujos de trabajo personalizados que se adapten a sus necesidades.

Parte de la confusión es que la nueva característica, Proyectos, entra en conflicto con el uso sobrecargado del término proyecto en la documentación anterior.


Los repositorios de GitHub se utilizan para almacenar todos los archivos, carpetas y otros recursos que le interesan.

Proyecto Git: también es uno de los recursos en el repositorio de Git y su uso principal es administrar los proyectos con un tablero visual. Si crea un proyecto en el repositorio de Git, cree un tablero visual como un tablero Kanban para administrar el proyecto.

De esta manera, puede tener múltiples proyectos en un repositorio.