¿Qué significan estas palabras en Git: repositorio, bifurcación, rama, clon, pista?


130

Sinceramente, no estoy claro sobre la semántica aquí. Se trata de copias / variantes de una unidad de código + historial, pero más allá de eso no estoy seguro de poder decir. ¿Se explica esta estructura lógica en alguna parte?


55
Recomiendo leer los primeros capítulos del libro Pro Git ( progit.org/book ).
ewall

61
+1. Muchos de los tutoriales de git le muestran cómo realizar ciertas tareas sin explicar qué significan ciertas palabras o cómo funciona git. Pedir un recurso que aborde esos temas es una pregunta legítima.
Daniel Stutzbach

14
Ojalá pudiera hacer +1 en el comentario de Daniel más. Si bien el significado de algunos de los términos (por ejemplo, el repositorio) debería ser obvio, su relación no siempre es (ramificación frente a bifurcación), y el significado real es fácilmente malinterpretado por alguien acostumbrado a un VCS centralizado. Además, mira "¿Qué es una rama?" De Pro Git sección: ¿un usuario básico realmente quiere saber sobre blobs y árboles, o simplemente quiere saber cualitativamente qué es una rama?
Cascabel

1
@DanielStutzbach es posible enviar comentarios sobre cosas que no están claras en el libro. (No sé la terminología correcta para decir eso). Lo he hecho, he dicho que el libro necesita definir qué es un repositorio. Estoy de acuerdo en que es bastante difícil obtener material conceptual de personas que entiendan algo muy bien. Ese libro (actualmente) habla sobre bases de datos sin definir cuáles son en este contexto y no dice nada sobre qué son los repositorios.
user34660

Respuestas:


146

Un repositorio es simplemente un lugar donde se almacena la historia de su trabajo. A menudo vive en un .gitsubdirectorio de su copia de trabajo, una copia del estado más reciente de los archivos en los que está trabajando.

Para bifurcar un proyecto (tomar la fuente del repositorio de alguien en cierto momento y aplicarle sus propios cambios divergentes), clonaría el repositorio remoto para crear una copia del mismo, luego haría su propio trabajo en su repositorio local y Cometer cambios.

Dentro de un repositorio tiene ramas, que son efectivamente bifurcaciones dentro de su propio repositorio. Sus ramas tendrán un compromiso de antepasado en su repositorio, y divergirán de ese compromiso con sus cambios. Más tarde puede fusionar los cambios de su rama. Las ramas le permiten trabajar en múltiples funciones dispares a la vez.

También puede rastrear ramas individuales en repositorios remotos. Esto le permite extraer cambios de las ramas de otro individuo y fusionarlos en una rama propia. Esto puede ser útil si usted y un amigo están trabajando juntos en una nueva función.

Hay muchos libros geniales en línea. Eche un vistazo a ProGit y Git Magic para comenzar, así como los tutoriales oficiales y el libro de la comunidad.


Por supuesto, leer los manuales y tutoriales de F es fundamental. Pero esto me parece un gran resumen de todo el asunto. ¡Muy apreciado!
brasofilo

Tenga en cuenta que puede cambiar su directorio de trabajo local a una nueva rama ("git checkout <new_branch>"). En este caso, los archivos de su directorio de trabajo local son REEMPLAZADOS por el contenido de la rama a la que está cambiando. Pero no pierde su trabajo: Git almacena todos los cambios confirmados ("git commit") que realizó en la rama anterior en la "base de datos" de Git (carpeta oculta .git) y le permitirá volver a cambiar sus archivos.
KrisWebDev

3
Creo que requiere una mención especial que históricamente, independientemente de qué VCS haya utilizado, la bifurcación y la ramificación se consideraban dos cosas separadas. La ramificación se consideró un acuerdo favorable e implícito entre los desarrolladores. La bifurcación fue más grave, ya que implicaba que los desarrolladores que trabajaban en un proyecto no estaban de acuerdo en algunas cosas y decidieron separarse. Los tenedores exitosos generalmente se fusionaron nuevamente en un proyecto más tarde después de que ambas partes llegaron a un acuerdo. Desde entonces, Git (y GitHub) han borrado estos términos y ambos términos básicamente representan la misma idea pero de diferentes maneras.
redteam316

¿Entonces un repositorio no tiene los archivos para el proyecto? Dices un lugar donde se almacena la historia de tu trabajo . ¿Eso es todo? ¿Solo el historial de archivos pero no los archivos en sí?
user34660

13

Voy a responder mi propia pregunta con un RTFM.

Pero, lea este buen manual. Como dice el autor:

“La conclusión que extraigo de esto es que solo puedes usar Git si entiendes cómo funciona Git. Simplemente memorizando qué comandos debe ejecutar a qué horas funcionarán en el corto plazo, pero es solo cuestión de tiempo antes de que se quede atascado o, peor aún, rompa algo.

“Lamentablemente, la mitad de los recursos existentes en Git adoptan ese enfoque: te guían a través de qué comandos ejecutar y cuándo, y esperan que debas hacerlo bien si solo imitas esos comandos. La otra mitad pasa por todos los conceptos, pero por lo que he visto, explican a Git de una manera que supone que ya entiendes cómo funciona Git ".


Esta introducción parece haberse trasladado a sbf5.com/~cduan/technical/git . La URL original todavía funciona por ahora.
Eric Anderson

1
Esto es cierto dentro del contexto. Si necesita ser productivo de inmediato o simplemente registrar el código, está bien no tener una comprensión profunda de cómo funciona git. Los tutoriales están bien. Así es como me metí en git. Sin embargo, si necesita ser más avanzado, como crear ramas, bifurcación, rebase y otras tareas más avanzadas, debe saber cómo funciona git, especialmente si su fondo está en un control de fuente centralizado.
Phil

3

Este GoogleTechTalk es una fantástica introducción a Git para aprender lo que realmente sucede detrás de escena mientras también aprende el idioma. Fue dado por un colaborador muy temprano en Git y dio esta charla en 2007 como una forma de introducción a Git. Si observa esta charla, no solo sabrá qué es cada palabra, como repositorio, bifurcación, rama, etc., sino que también sabrá lo que ocurre detrás de escena cuando cada una de ellas se hace, fusiona, etc.

La dirección es larga pero muy informativa. También contrasta a Git con otros sistemas de control de versiones para que pueda comprender por qué Git se creó de la forma en que fue y cuáles son las ventajas comparativas que tiene sobre otros sistemas de control. Aunque la charla es antigua, es muy útil comenzar a trabajar. Vería esto antes de saltar a los manuales. Las cosas tendrán mucho más sentido como resultado, creo.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.