Comment pousser un dépôt Git local vers un autre ordinateur?

J'ai une configuration de référentiel Git local sur mon ordinateur portable. Je voudrais le pousser sur mon bureau.

Comment puis-je faire ça?

58
demandé sur nubela 2010-05-22 16:16:25

3 réponses

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 comme "desktop".
Comme il est nu, vous pouvez le pousser (ainsi que le tirer si nécessaire)

git push desktop

Comme le livre ProGit mentionne , git prend en charge le protocole de fichier:

Le plus basique 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 moins probable où tout le monde se connecte au même ordinateur.

52
répondu VonC 2017-05-23 12:26:36

Voici un script que j'ai écrit pour faire cette chose. Le script gère toutes mes initialisations habituelles des nouveaux repos git

  1. crée .fichier gitignore
  2. initialise .git
  3. crée le dépôt git nu sur le serveur
  4. configure le dépôt Git local pour pousser vers ce dépôt distant

Http://gist.github.com/410050

Vous devrez certainement le modifier en fonction de la configuration que vous avez, surtout si vous avez affaire à Windows ordinateur portable / bureau.

Voici le script complet:

#!/bin/bash
# Create Git Repository
# created by Jim Kubicek, 2009
# jimkubicek@gmail.com
# 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 $REPLOGIN@$REPADDRESS:$REPLOCATION/
rm -rf $TEMPREP

# Set up the origin for the project
echo "Linking current repository to remote repository"
git remote add origin $REPLOGIN@$REPADDRESS:$REPLOCATION/$REPNAME.git/
5
répondu kubi 2014-07-31 23:02:42

Le moyen le plus simple (pas le meilleur) est de partager le répertoire du référentiel via LAN, et d'utiliser le protocole file:// de git (voir man git).

Pour moi, le meilleur moyen est d'utiliser gitolite (voir gitolite docs pour obtenir des instructions détaillées).

2
répondu takeshin 2010-05-22 20:48:49