2010-03-31 11 views
6

Entiendo que Git puede usarse sin un repositorio central. Sin embargo, estoy comenzando un proyecto con otras personas y estamos geográficamente distribuidos. Es decir. Nunca estaremos en la misma LAN para sincronizar los repos.¿Puede Git empujar/tirar a través de Internet a repos distribuidos?

Entonces mi pregunta: ¿es posible empujar/tirar los cambios de los demás repos a través de internet? Si es así, ¿cómo lo hago? La manera más fácil de no hacer ruido.

Gracias por adelantado.

+3

si se puede acceder a la máquina en el otro extremo a través de ssh puede presionar/jalar con git –

+0

Gracias por las excelentes respuestas. Estaba pensando en ir con Github, pero me preguntaba si esa era la forma preferida/más fácil, o si la ruta puramente distribuida era el camino a seguir. Probablemente me quede con github entonces. –

+0

GitHub es la solución menos complicada por mucho –

Respuesta

12

Si tiene acceso SSH a máquinas de los demás (que puede ser un poco más fácil de configurar en algunas redes que git: // Protocolo de acceso) entonces es tan fácil como:

git pull ssh://[email protected]:/path/to/repository/.git 

Si directa el acceso mediante cualquier protocolo no es posible (por ejemplo, si está detrás de un enrutador con NAT), entonces siempre puede enviarse parches entre sí.

Pero Git tiene otra forma de hacerlo, git-bundle, que le permite enviar un archivo (por correo electrónico, o como sea que envíe archivos) a sus colaboradores que puede ser enviado como un repositorio. El autor de Pro Git tiene un blog post tutorial on this.

3

Necesita algún tipo de conexión "directa" no nativa (lo que significa que si está detrás de un enrutador es un problema). Si fuera usted, iría por github

La sección de ayuda lo explica todo muy bien.

+2

puede estar detrás de un enrutador mientras esté en una zona dmz del enrutador. –

+1

No lo uso yo mismo, pero está claro a partir de muchas otras preguntas que los usuarios han utilizado con éxito git via ssh en los cuadros de Windows; el reenvío de puertos es solo una configuración rápida del enrutador. Tenga en cuenta que para los proyectos de código cerrado, otra opción es pagar el alojamiento privado de git. – Cascabel

+3

@fuzzy lollipop: Por favor, no abra * todos * los puertos en su propia computadora solo para abrir el único que abre SSH. – Cascabel

5

Si puede conectar ssh a las computadoras de los demás, puede hacer git push/pull en las computadoras de los demás. Sin embargo, no es realmente recomendable tener un repositorio de igual a igual. Uno de ustedes debe mantener un repositorio "simple" con el que todos sincronicen, de lo contrario you will run into strange and annoying situations when you push to a repository that someone else is working on.

Probablemente sea mejor usar github, a menos que esté trabajando en algo de código cerrado y no pueda pagar las tarifas para repositorios privados.

2

Sugeriría utilizar una ubicación de repositorio central que todos puedan enviar y extraer a través de ssh. Esto evitará el problema mencionado anteriormente que son causadas por empujar a un acuerdo de recompra alguien está trabajando en

Ver este enlace para una buena información de configuración:.

http://toolmantim.com/thoughts/setting_up_a_new_remote_git_repository

Cuestiones relacionadas