Proyecto vs Repositorio en GitHub

190

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 ( aquí , aquí y aquí ) 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?

carlossierra
fuente
1
Un repositorio de github es solo un "directorio" donde pueden existir archivos y carpetas. Otras personas pueden crear sus propias copias de este "directorio" y modificarlo como lo deseen, luego solicitar que sus cambios se coloquen en el repositorio principal. En cuanto a los proyectos, no estoy seguro ya que nunca los he usado.
byxor
1
Dijiste que has visto una pregunta similar, pero ¿has leído realmente tu primer enlace? "Eso es algo gitador, no git. Puedes tener múltiples repositorios por proyecto". y otra respuesta en ese mismo hilo "Git no tiene cosas como proyectos, solo repositorios". Si realmente quisiste decir proyectos de github, te sugiero que consultes los documentos de github al respecto help.github.com/articles/…
PeeHaa
66
@PeeHaa sí, lo hice. La primera oración dice esto: "Eso es algo gitador, no git. Puedes tener múltiples repositorios por proyecto". Para mí, esto habla de Gitorius, no de GitHub. Además, dice que en Gitorious puedes tener múltiples repositorios por proyecto, pero en GitHub es al revés. Entonces, realmente agradecería si pudiera explicar cómo responde esto a mi pregunta.
carlossierra
2
Creo que esto toca la semántica donde la nueva característica Proyectos - el tablero visual - entra en conflicto con el uso sobrecargado del término Proyecto. Es probable que el voto negativo no sea una cuestión de programación.
osowskit
2
Esto debería tener todo lo que necesita github.com/blog/…
osowskit

Respuestas:

110

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

Proyecto

Un repositorio 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 proyecto 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.

osowskit
fuente
1
Así que estoy usando Github para almacenar el código de mis proyectos de investigación individuales A, B, C, etc. Si lo entiendo correctamente, ¿cada proyecto de investigación obtendría su propio repositorio? ¿Entonces A obtiene un repositorio, B obtiene un repositorio, C obtiene un repositorio, etc.?
Zócalo
Cuando bifurcas un repositorio, ¿tu bifurcación tiene acceso a la instantánea de la placa del proyecto?
Geominded
77
¿Cómo se elige esto como respuesta aceptada? simplemente copie y pegue lo que se describe. puede ser leído por el OP pero la gente quiere saber con ejemplos simples.
batmaci
153

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

Hecho 2: Este ya no es el caso.

Hay mucha confusión sobre los 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 diferencias sutiles 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 los proyectos o de los repositorios. Si hubieran elegido algún 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 algunos 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 ninguna :

  • Crear el proyecto de un 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.

rsp
fuente
En Bitbucket de Atlassian, puede crear proyectos que abarquen una familia de repositorios relacionados. ¿Github tiene esta característica organizativa? Esperaba que Github Projects fuera esa cosa, pero claramente no lo es. Parece que no puedo entender cómo hacer posible esta organización en Github. Estoy muy acostumbrado a Bitbucket, por lo que puede ser una curva de aprendizaje.
Ungeheuer
De cierta manera, tendría más sentido para mí si un proyecto pudiera tener múltiples repositorios. Tengo la impresión de que GitHub notó que se está haciendo viejo y, en lugar de hacer un rediseño completo, simplemente optó por hacer una solución y venderlo como algo bueno. Por cierto, ¿quién es el propietario de GitHub en este momento? Tal vez la respuesta da alguna pista sobre por qué sucede esto. Solo pensando en voz alta.
Almir Campos
19

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 Git y su uso principal es administrar los proyectos con un tablero visual. Si crea un proyecto en Git Repository, cree un tablero visual como un tablero Kanban para administrar el proyecto.

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

Digamber
fuente
4

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 @Brandon Ibbotson 's comentario :

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

Do Nhu Vy
fuente
Gracias por su respuesta. Pero no creo que su definición de proyecto sea lo que GitHub llama proyecto, ya que los ejemplos de repositorios de proyectos múltiples no muestran nada en la pestaña Proyectos para esos repositorios. ¿Puedes por favor elaborar sobre esto?
carlossierra
2
En realidad, ¡el ejemplo que usa Zend Framework es totalmente incorrecto! Según la nomenclatura de GitHub, hay una organización llamada "zendframework" que posee muchos repositorios, incluido uno también llamado "zendframework" y uno para cada módulo del marco.
igorcadelima
3
9 de noviembre de 2017: el ejemplo de 1 repositorio = muchos proyectos devuelve un 404.
Bram Vanroy
1
los enlaces están rotos
Pmpr
1
En términos de GitHub, esta respuesta está en conflicto con otras respuestas más populares anteriores.
Manohar Reddy Poreddy
1

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

Anshu Aditya
fuente
1

La diferencia conceptual en mi entendimiento es que un proyecto puede contener muchos repositorios y que son independientes entre sí, mientras que simultáneamente un repositorio puede contener muchos proyectos. Repo es solo un lugar de almacenamiento de código, mientras que un proyecto es una colección de tareas para una determinada característica.

¿Tiene sentido? Un repositorio grande puede tener muchos proyectos en los que trabajan diferentes personas al mismo tiempo (se agregan muchas características de diferencia a un monolito), un proyecto grande puede tener muchos repositorios pequeños que están separados pero son parte del mismo proyecto que interactúan con cada uno otro - microservicios? Es una versión personal de lo que quieres hacer. Creo que el repositorio (almacenamiento) frente al proyecto (tareas) es la principal diferencia: si estoy equivocado, ¡hágamelo saber / explíquelo! Gracias.

Jeremy
fuente
0

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ó.

lago
fuente