web-dev-qa-db-fra.com

Comment cloner un référentiel Git dans un dossier spécifique?

L'exécution de la commande git clone [email protected]:whatever crée un répertoire dans mon dossier actuel, nommé quoi que ce soit, et place le contenu du référentiel Git dans ce dossier:

/httpdocs/whatever/public

Mon problème est que j'ai besoin du contenu du référentiel Git cloné dans mon répertoire actuel pour qu'il apparaisse à l'emplacement approprié pour le serveur Web:

/httpdocs/public

Je sais comment déplacer les fichiers après avoir cloné le référentiel, mais cela semble casser Git, et j'aimerais pouvoir mettre à jour simplement en appelant git pull. Comment puis-je faire ceci?

1860
David Smith

Option A:

git clone [email protected]:whatever folder-name

Option B:

déplacez également le dossier .git.

Mieux encore:

Conservez votre copie de travail ailleurs et créez un lien symbolique.

2655
Can Berk Güder

L’exemple suivant, je pense, que beaucoup de personnes qui posent cette question sont les suivants. Si vous êtes dans le répertoire dans lequel vous voulez vider le contenu du référentiel git, lancez:

git clone [email protected]:whatever .

Le "." à la fin, spécifie le dossier en cours comme dossier de sortie.

548
J Wynia

Allez dans le dossier .. Si le dossier est vide, alors:

git clone [email protected]:whatever .

else

git init
git remote add Origin PATH/TO/REPO
git fetch
git checkout -t Origin/master
193
csomakk

Clonage de base du référentiel Git

Vous clonez un référentiel avec

git clone [url]

Par exemple, si vous souhaitez cloner la bibliothèque Git Open Framework Drupal de l'Université Stanford appelée open_framework, vous pouvez le faire comme suit:

$ git clone git://github.com/SU-SWS/open_framework.git

Cela crée un répertoire nommé open_framework (à l'emplacement de votre système de fichiers local actuel), initialise un répertoire .git à l'intérieur, extrait toutes les données de ce référentiel et extrait une copie de travail de la dernière version. Si vous allez dans le répertoire open_framework que vous venez de créer, vous y verrez les fichiers du projet, prêts à être utilisés ou utilisés.

Clonage d'un référentiel dans un dossier local spécifique

Si vous souhaitez cloner le référentiel dans un répertoire nommé autre que open_framework, vous pouvez le spécifier comme option de ligne de commande suivante:

$ git clone git:github.com/SU-SWS/open_framework.git mynewtheme

Cette commande fait la même chose que la précédente, mais le répertoire cible s'appelle mynewtheme.

Git a un certain nombre de protocoles de transfert différents que vous pouvez utiliser. L'exemple précédent utilise le protocole git: //, mais vous pouvez également voir http (s): // ou user @ server: /path.git, qui utilise le protocole de transfert SSH.

79
Craig Gjerdingen

Lorsque vous déplacez les fichiers à l'endroit souhaité, déplacez-vous également le répertoire .git? Selon votre système d'exploitation et votre configuration, ce répertoire peut être masqué. 

Il contient le référentiel et les fichiers de support, tandis que les fichiers de projet qui se trouvent dans votre répertoire /public correspondent uniquement aux versions de la validation d'extraction actuelle (branche maître par défaut).

13
Paul

Cloner:

git clone [email protected]:jittre/name.git

Cloner la "branche spécifique":

git clone -b [branch-name] [email protected]:jittre/name.git
13
Selvamani

Pour cloner en Répertoire de travail actuel:

git clone https://github.com/link.git 

Pour cloner en autre répertoire:

git clone https://github.com/link.git ./Folder1/Folder2

J'espère que ça aide :)

11
Sarat Chandra

Si vous voulez cloner dans le dossier actuel, essayez ceci:

git clone https://github.com/example/example.git ./
11
Luis

Assurez-vous de supprimer le référentiel .git si vous essayez d'extraire un élément dans le répertoire actuel.

rm -rf .git puis git clone https://github.com/symfony/symfony-sandbox.git

9
alex

Pour cloner le référentiel Git dans un dossier spécifique, vous pouvez utiliser le paramètre -C <path>, par exemple.

git -C /httpdocs clone [email protected]:whatever

Bien que cela crée toujours un dossier whatever par dessus, pour cloner le contenu du référentiel dans le répertoire en cours, utilisez la syntaxe suivante:

git [email protected]:whatever .

Notez que cloner dans un répertoire existant est seulement autorisé lorsque le répertoire est vide .

Étant donné que vous clonez dans un dossier accessible au public, séparez votre référentiel Git de votre arbre de travail en utilisant le dossier --separate-git-dir=<git dir> ou exclude .git dans la configuration de votre serveur Web (par exemple, dans le fichier .htaccess).

9
kenorb

Utilisation

git clone <repository>

Clonez le référentiel situé dans le <référentiel> sur la machine locale. Le référentiel d'origine peut être situé sur le système de fichiers local ou sur une machine distante accessible via HTTP ou SSH.

git clone <repo> <directory>

Clonez le référentiel situé dans <référentiel> dans le dossier appelé <répertoire> sur la machine locale.

Source: Mise en place d'un référentiel _

7
Nagarjun

Voici comment je le ferais, mais j'ai fait un pseudonyme pour le faire pour moi.

$ cd ~Downloads/git; git clone https:git.foo/poo.git

Il y a probablement une manière plus élégante de le faire, mais j'ai trouvé que c'était plus facile pour moi.

Voici l'alias que j'ai créé pour accélérer les choses. Je l'ai fait pour zsh, mais cela devrait fonctionner très bien pour bash ou tout autre shell comme le poisson, le xyzsh, le fizsh, etc.

Éditez ~/.zshrc, /.bashrc, etc. avec votre éditeur préféré (le mien est Leafpad, donc j’écrirais $ leafpad ~/.zshrc).

Ma préférence personnelle, cependant, est de créer un plugin zsh pour garder une trace de tous mes alias. Vous pouvez créer un plugin personnel pour oh-my-zsh en exécutant les commandes suivantes:

$ cd ~/.oh-my-zsh/
$ cd plugins/
$ mkdir your-aliases-folder-name; cd your-aliases-folder-name
     # In my case '~/.oh-my-zsh/plugins/ev-aliases/ev-aliases'
$ leafpad your-zsh-aliases.plugin.zsh
     # Again, in my case 'ev-aliases.plugin.zsh'

Ensuite, ajoutez ces lignes au fichier alises.plugin vierge que vous venez de créer:

# Git aliases
alias gc="cd ~/Downloads/git; git clone "

(A partir de là, remplacez votre nom par le mien.)

Ensuite, pour que les alias fonctionnent, ils doivent (avec zsh) être recherchés (ou peu importe le nom). Pour ce faire, ajoutez ceci dans votre document de plugin personnalisé:

## Ev's Aliases

#### Remember to re-source zsh after making any changes with these commands:

#### These commands should also work, assuming ev-aliases have already been sourced before:

allsource="source $ZSH/oh-my-zsh.sh ; source /home/ev/.oh-my-zsh/plugins/ev-aliases/ev-aliases.plugin.zsh; clear"
sourceall="source $ZSH/oh-my-zsh.sh ; source /home/ev/.oh-my-zsh/plugins/ev-aliases/ev-aliases.plugin.zsh"
#### 

####################################

# git aliases

alias gc="cd ~/Downloads/git; git clone "
# alias gc="git clone "
# alias gc="cd /your/git/folder/or/whatever; git clone "

####################################

Sauvegardez votre plugin oh-my-zsh et lancez allsource. Si cela ne semble pas fonctionner, lancez simplement source $ZSH/oh-my-zsh.sh; source /home/ev/.oh-my-zsh/plugins/ev-aliases/ev-aliases.plugin.zsh. Cela chargera le source du plugin qui vous permettra d’utiliser désormais allsource.


Je suis en train de créer un référentiel Git avec tous mes alias. N'hésitez pas à les consulter ici: Les fichiers de points d'Ev . S'il vous plaît, n'hésitez pas à les modifier et à les améliorer pour répondre à vos besoins.

3
Ev-

Si vous utilisez ssh pour git cloning, vous pouvez utiliser la commande suivante.

git -C path clone [email protected]:path_to_repo.git

par exemple: git -C /home/ubuntu/ clone [email protected]:kennethreitz/requests.git extrairait le référentiel git pour requests dans votre chemin /home/ubuntu/.

1
Ankit Singh

Pour une raison quelconque, cette syntaxe ne se démarque pas:

git clone repo-url [folder]

Le dossier Here est un chemin facultatif menant au dossier local (qui sera un référentiel local).

Git clone va aussi pull code du référentiel distant dans le référentiel local. En fait c'est vrai: 

git clone repo-url  =  git init + git remote add Origin repo-url + git pull
0
prosti
For Windows user 

1> Open command Prompt.
2> Change the directory to destination folder (Where you want to store your project in local machine.)
3> Now go to project setting online(From where you want to clone)
4> Click on clone, and copy the clone command.
5> Now enter the same on cmd .

It will start cloning saving on the selected folder you given .
0
Tarit Ray

Bien que toutes les réponses ci-dessus soient bonnes, je voudrais proposer une nouvelle méthode au lieu d'utiliser la méthode du lien symbolique dans l'annuaire public HTML telle que proposée par BEST dans la réponse acceptée. Vous devez avoir accès aux configurations de l'hôte virtuel de votre serveur.

Il s'agit de configurer l'hôte virtuel de votre serveur Web directement vers le répertoire du référentiel. Dans Apache, vous pouvez le faire comme:

DocumentRoot/var/www/html/site web/your-git-repo

Voici un exemple de fichier d'hôte virtuel:

<VirtualHost *:443>
    ServerName example.com

    DocumentRoot /path/to/your-git-repo
    ...
    ...
    ...
    ...
</VirtualHost>
0
Tarik