2010-11-09 20 views
69

Por ejemplo, he clonado el repositorio de origen en dos computadoras. Luego, sigo adelante y realizo algunos cambios y me comprometo con el repositorio local de la computadora A. ¿Cómo hago ahora estos cambios en la computadora B? Ambas computadoras A y B están conectadas a una red.¿Cómo obtengo del repositorio de otra computadora en Git?

Lo que estoy buscando será el equivalente de alguien que crea manualmente un parche y me lo envía, el cual puedo aplicar a mi copia de trabajo/repositorio local.

+3

no es realmente un repositorio local si está en otra computadora, en mi opinión: así @ Antoine's [respuesta] (http://stackoverflow.com/a/4131211/155090) coincide mejor con el título de su pregunta ... – RubyTuesdayDONO

+0

... while @ Amber's [respuesta] (http://stackoverflow.com/a/4131239/155090) coincide con los detalles aclaratorios de la narración de su pregunta. – RubyTuesdayDONO

+1

Deseo que esta pregunta tuviera una respuesta de Windows – Brandon

Respuesta

91

Si se puede acceder a la máquina desde la que desea acceder desde ssh, puede agregar el repositorio como control remoto a través de ssh, y a continuación, tire de ella como lo haría con cualquier control remoto:

$ git remote add repo_b [email protected]:path/to/repository.git 
$ git pull repo_b master 

(puede omitir la etapa de adición de un mando a distancia y sólo tiene que especificar la URL completa en el comando git pull en lugar de un nombre remoto, pero si usted va a . estar tirando desde el repositorio de forma regular, añadiendo como un control remoto que le ahorrará un montón de mecanografía)

+1

¿Y qué tal el push de computer_b? ¿computer_b empujará los cambios de forma normal? "git push"? –

+13

Para un repositorio local, puede usar lo mismo, pero configure la ruta remota como 'file: /// local/path/to/repo/.git /' – exa

10

Puede configurar un servidor real con git daemon. De lo contrario, puede usar git bundle, que agrupa la representación interna de git en un archivo que puede desagregarse con git pull en el otro extremo.

E.g. a partir de los documentos GIT, la agrupación de todo:

git bundle create file.bundle master 

Luego, en el otro extremo, se puede hacer algo como:

git pull file.bundle HEAD 
33

Tenga una mirada en git pull --help

Esto daría algo así como git pull /my/other/repository

+7

Específicamente, en la sección * GIT URLS *, dice: "Para los repositorios locales, también soportados por git natively, se pueden usar las siguientes sintaxis:' /path/to/repo.git/',' file: /// path/to/repo.git/'" – jemmons

7

Si se puede conectar a la computadora B por ssh, puede utilizar:

git clone [email protected]:/path/to/repo 

será permite el seguimiento remoto a través de esta conexión ssh y le permite usar git pull/push.

1

que trabajó para mí para un repositorio local de otro equipo:

git add remota [email protected] origin_username:/home/usuario/dev/proyecto// principal.git/

git maestro origin_username tirón

o

origin_username git pull some_branch

+0

, puede listar todas las sucursales remotas usando: git ls-remote origin_username – McQuade

0

Yo he llegado con

git clone /path/to/local/repository 
0

Un poco demasiado tarde, pero por todo lo que vale la pena y para ampliar la respuesta de Antoine Pelisse, también puede extraer desde el host ssh que tiene el mismo repositorio con un par de confirmaciones más, sin agregar un remota a su configuración:

git pull [email protected]:/path/to/repo # while in the local repo folder 

Para que quede claro - uno de los posibles usos de este es cuando se tiene dos anfitriones (A y B) que clonaron la misma cesión temporal de un remota, y usted' he comprometido algunos cambios en el host A y no deseo enviarlos al control remoto (todavía), pero en su lugar desea retirar esos commits del host B. El comando anterior sincroniza sus repos sin presionar remote.

Cuestiones relacionadas