2010-05-14 11 views
17

Así que no soy un experto en control de fuentes, he usado Subversion para proyectos en el pasado. Tengo que usar Git para un proyecto en particular (Repo de Git proporcionado por el cliente).¿Cómo puedo traducir conceptos de tronco/rama de Subversion a Git?

Mi flujo de trabajo es tal que trabajaré en los archivos de dos computadoras diferentes y, a menudo, debo verificar los cambios que son inestables cuando me desplazo de un lugar a otro para poder continuar con mi trabajo. Entonces, lo que ocurre es cuando, por ejemplo, el cliente va a obtener la última versión, también descarga el código inestable.

En SVN, se puede abordar mediante la creación de un tronco y el uso de ramas de trabajo, o utilizar el tronco como la versión de trabajo y crear ramas estables.

¿Cuál es el concepto equivalente en Git, y hay una manera simple de hacer esto a través de GitHub?

Respuesta

17

Hay un montón de diferentes maneras de hacer esto. Si tiene que pasar de una computadora a otra, cambiará a un repositorio diferente, lo que significa que estará presionando sus cambios hacia el repositorio remoto. Eso está bien, pero también le significa

Un ejemplo muy sencillo es realizar solamente su trabajo inestable en una rama privada, y para nombrar algo obvio, por ejemplo, unstable-development. Aquí está cómo hacer esto desde cero. Primero, hagamos un nuevo repositorio del sitio de su cliente, que llamaré "salsa secreta".

$ git clone git://example.com/repositories/secret-sauce.git 

todavía estás en la rama master, el valor predeterminado. Hagamos una nueva rama para que pueda enviar las cosas allí en lugar de en master.

$ git branch unstable 
$ git checkout unstable 
Switched to branch 'unstable' 

Bien. Ahora vamos a añadir algo de código inestable:

$ touch kablammo.txt 
$ git add * 
$ git commit -m "Added unstable code." 
[master (root-commit) 9428aef] Initial checkin. 
0 files changed, 0 insertions(+), 0 deletions(-) 
create mode 100644 kablammo.txt 

En este momento, sólo existe unstable de su lado. Tenga en cuenta que cuando clonamos, obtuvimos un repositorio remoto llamado origin, que tiene una rama correspondiente master. Cuando su repositorio local conoce las sucursales de un repositorio remoto, lo llamamos una "rama de seguimiento". Puede ver todas las ramas de seguimiento remoto con git branch -r:

$ git branch -r 
    origin/HEAD -> origin/master 
    origin/master 

bien. ¡Empujemos nuestros cambios!

$ git push origin unstable 

Eso es todo - nuestros cambios viven ahora en la rama unstable en el repositorio remoto. Si queremos ver lo que hace la gente en la rama master nuevamente, podemos volver a cambiar con git checkout master.

+0

mejor que x número de "tutoriales" que toman un proceso simple y lo hacen complejo. – Thufir

9

Me parece un recurso valioso: A Successful Git Branching Model

A diferencia de SVN, Git es descentralizada. Nunca deberías necesitar insertar un código inestable en el repositorio de tu cliente. Simplemente puede extraer el código inestable a su 2da computadora desde la 1ra.

Dicho esto, Git maneja ramificando grande y debe ser una parte integral de cualquier metodología que terminan usando.

Cuestiones relacionadas