2010-05-22 21 views
53

Ho installato il repository Git sul mio laptop. Mi piacerebbe spingerlo sul mio desktop.Come spingere un repository Git locale su un altro computer?

Come posso farlo?

+4

git dovrebbe essere in superusers.com – vodkhang

+1

Hai letto la pagina man? digitato 'git help push'? – crazyscot

+10

@vodkhang: no non dovrebbe essere su superutente. È una parte importante di uno strumento per sviluppatori e del suo ambiente di programmazione. – VonC

risposta

49

Se si ha accesso a una directory condivisa, è possibile (vedi git clone e 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 

che creerà un bare repo, si fa riferimento nella vostra repo locale come "desktop".
Dal momento che è nuda, si può spingere ad esso (così come tirare da esso se necessario)

git push desktop 

Come il ProGit book mentions, git supporta il protocollo di file:

Il più fondamentale è il protocollo locale , in cui il repository remoto si trova in un'altra directory sul disco.
Questo viene spesso utilizzato se tutti i membri del team hanno accesso a un filesystem condiviso come un'installazione NFS o nel caso meno probabile che tutti accedano allo stesso computer.

+0

'git push desktop' significa spingere' da' laptop 'a' desktop. Un repo 'bare' non è assolutamente necessario per questo. – Timo

+0

@Timo Sì, dal 2015 è possibile un repository non nudo: https: // stackoverflow.com/a/30030236/6309 – VonC

5

Ecco uno script che ho scritto per fare proprio questa cosa. Lo script gestisce tutto il mio solito l'inizializzazione di nuove operazioni pronti contro termine git

  1. crea un file .gitignore
  2. inizializza .git
  3. crea il repo git nuda sul server
  4. set up il repo git locale per spingere a che repo remoto

http://gist.github.com/410050

avrete sicuramente a modificarlo per adatto a qualsiasi configurazione tu abbia, specialmente se hai a che fare con laptop/desktop Windows.

Ecco lo script 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

Consiglierei di copiare lo script per intero nella risposta (poiché non è troppo grande). Una volta che Stack Overflow rilascia il prossimo dump di cc-wiki (http://blog.stackoverflow.com/2009/06/stack-overflow-creative-commons-data-dump/), sei sicuro che questo script * sarà sempre * disponibile . Altrimenti, +1 – VonC

2

La (non il migliore) modo più semplice è quello di condividere la directory repository via LAN, e utilizzare il protocollo di file:// git (vedi man git).

Per me, il modo migliore è utilizzare gitolite (vedere gitolite docs per istruzioni dettagliate).

Problemi correlati