2010-05-22 10 views
53

J'ai une configuration de dépôt Git local sur mon ordinateur portable. Je voudrais le pousser sur mon bureau.Comment faire pour pousser un référentiel Git local vers un autre ordinateur?

Comment puis-je faire cela?

+4

git devrait être dans superusers.com – vodkhang

+1

Avez-vous lu la page man? tapé 'git help push'? – crazyscot

+10

@vodkhang: non, il ne devrait pas être sur le super-utilisateur. C'est une partie importante d'une boîte à outils de développeur et de son environnement de programmation. – VonC

Répondre

49

Si vous avez accès à un répertoire partagé, vous pouvez (voir git clone et 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 

Cela va créer un bare repo, référencé dans votre repo local "bureau".
Comme il est nu, vous pouvez pousser à lui (ainsi que tirer de si nécessaire)

git push desktop 

Comme le ProGit book mentions, git prend en charge le protocole de fichier:

Le plus fondamental est le protocole local, dans lequel le référentiel distant se trouve dans un autre répertoire sur le disque.
Ceci est souvent utilisé si tout le monde dans votre équipe a accès à un système de fichiers partagé tel qu'un montage NFS ou, dans le cas le moins probable, que tout le monde se connecte au même ordinateur.

+0

'git push desktop' signifie pousser' from' ordinateur portable 'to' desktop. Un repo "bare'" n'est certainement pas nécessaire pour cela. – Timo

+0

@Timo Oui, depuis 2015, un repo non nu est possible: https: // stackoverflow.com/a/30030236/6309 – VonC

5

Voici un script que j'ai écrit pour faire exactement cela. Le script gère tout mon initialisation habituelle de nouvelles prises en pension git

  1. crée .gitignore fichier
  2. initialise .git
  3. crée la git nue sur le serveur
  4. met en place le git local pour pousser à qui repo à distance

http://gist.github.com/410050

Vous aurez certainement à modifier pour convient à toute configuration que vous avez, surtout si vous avez affaire à un ordinateur portable/bureau Windows.

Voici le script complet:

#!/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

Je vous recommande de copier votre script dans sa totalité (car il n'est pas trop gros). Une fois que Stack Overflow a libéré le prochain vidage de cc-wiki (http://blog.stackoverflow.com/2009/06/stack-overflow-creative-commons-data-dump/), vous êtes sûr que ce script sera * toujours * disponible . Sinon, +1 – VonC

2

La meilleure façon (pas le meilleur) est de partager le répertoire de dépôt via LAN et utiliser le protocole de git file:// (voir man git). Pour moi, la meilleure façon est d'utiliser gitolite (voir gitolite docs pour des instructions détaillées).

Questions connexes