2010-05-22 27 views
53

Tengo una configuración de repositorio Git local en mi computadora portátil. Me gustaría llevarlo a mi escritorio.¿Cómo presionar un repositorio local de Git a otra computadora?

¿Cómo puedo hacer eso?

+4

git debe estar en superusers.com – vodkhang

+1

¿Has leído la página man? tipeado 'git help push'? – crazyscot

+10

@vodkhang: no, no debería estar en superusuario. Es una parte importante de una caja de herramientas de desarrollador y su entorno de programación. – VonC

Respuesta

49

Si usted tiene acceso a un directorio compartido, se puede (ver git clone y git remote):

git clone --bare /path/to/your/laptop/repo /shared/path/to/desktop/repo.git 
git remote add desktop /shared/path/to/desktop/repo.git 

que creará una bare repo, referenciado en tu repositorio local como "escritorio".
Dado que es descubierto, se puede empujar a ella (así como tirar de ella si es necesario)

git push desktop 

A medida que el ProGit book mentions, git ¿Apoya el protocolo de archivo:

El más básico es el protocolo Local, en el que el repositorio remoto se encuentra en otro directorio del disco.
Esto se usa a menudo si todos en su equipo tienen acceso a un sistema de archivos compartido, como un montaje NFS, o en el caso menos probable de que todos inicien sesión en la misma computadora.

+0

'git push desktop' significa push' from' laptop 'to' desktop. Un repositorio 'bare' definitivamente no es necesario para esto. – Timo

+0

@Timo Sí, desde 2015, es posible un repo no pelado: https: // stackoverflow.com/a/30030236/6309 – VonC

5

Aquí hay un script que escribí para hacer exactamente esto. El script se encarga de toda mi habitual inicialización de nuevos repositorios Git

  1. crea un archivo .gitignore
  2. inicializa .git
  3. crea el repositorio git desnuda en el servidor
  4. conjuntos hasta el repositorio Git local para empujar a que repo remota

http://gist.github.com/410050

definitivamente tendrá que modificarlo para se adapte a la configuración que tenga, especialmente si está trabajando con una computadora portátil o de escritorio con Windows.

Aquí es el guión completo:

#!/bin/bash 
# Create Git Repository 
# created by Jim Kubicek, 2009 
# [email protected] 
# http://jimkubicek.com 

# DESCRIPTION 
# Create remote git repository from existing project 
# this script needs to be run from within the project directory 

# This script has been created on OS X, so YMMV 

####### 
# Parameters 
REPLOGIN=#Login name 
REPADDRESS=#Repo address 
REPLOCATION=/Users/Shared/Development #Repo location 

# The repo name defaults to the name of the current directory. 
# This regex will accept foldernames with letters and a period. 
# You'll have to edit it if you've got anything else in your folder names. 
REPNAME=`pwd | egrep -o "/[a-zA-Z]+$" | egrep -o "[a-zA-Z\.]+"` 


# If you have standard files/directories to be ignored 
# add them here 
echo "Creating .gitignore" 
echo 'build/' >> .gitignore # The build directory should be ignored for Xcode projs 
echo '.DS_Store' >> .gitignore # A good idea on OS X 

# Create the git repo 
echo "Initializing the repo" 
git init 
git add . 
git commit -m "Initial commit" 

# Copy the repo to the server 
echo "Copying the git repo to the server $REPADDRESS" 
TEMPREP="$REPNAME.git" 
git clone --bare .git $TEMPREP 
scp -r $TEMPREP [email protected]$REPADDRESS:$REPLOCATION/ 
rm -rf $TEMPREP 

# Set up the origin for the project 
echo "Linking current repository to remote repository" 
git remote add origin [email protected]$REPADDRESS:$REPLOCATION/$REPNAME.git/ 
+2

Recomendaría copiar el guión completo en su respuesta (ya que no es demasiado grande). Una vez que Stack Overflow libera el siguiente volcado de cc-wiki (http://blog.stackoverflow.com/2009/06/stack-overflow-creative-commons-data-dump/), está seguro de que este script * siempre * estará disponible . De lo contrario, +1 – VonC

2

El (no el mejor) manera más fácil es compartir el directorio del repositorio a través de LAN, y el uso de file:// protocolo de Git (ver man git).

Para mí, la mejor manera es usar gitolite (ver gitolite docs para obtener instrucciones detalladas).

Cuestiones relacionadas