Comment cloner un référentiel Git dans un dossier spécifique?
-
19-08-2019 - |
Question
L'exécution de la commande git clone git@github.com: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 cela?
La solution
Option A:
git clone git@github.com:whatever folder-name
Ergo, pour right here
utiliser:
git clone git@github.com:whatever .
Option B:
Déplacez également le dossier .git
. Notez que le shopt -s dotglob
dossier est caché dans la plupart des explorateurs de fichiers graphiques. Assurez-vous donc de montrer les fichiers cachés.
mv /where/it/is/right/now/* /where/I/want/it/
mv /where/it/is/right/now/.* /where/I/want/it/
La première ligne saisit tous les fichiers normaux, la deuxième ligne saisit les fichiers à points. Il est également possible de le faire en une seule ligne en activant dotglob (c'est-à-dire -fn
), mais c'est probablement une mauvaise solution si vous posez la question à laquelle cette réponse répond.
Mieux encore:
Conservez votre copie de travail ailleurs et créez un lien symbolique. Comme ceci:
ln -s /where/it/is/right/now /the/path/I/want/to/use
Pour vous, ce serait quelque chose comme:
ln -sfn /opt/projectA/prod/public /httpdocs/public
Ce qui pourrait facilement être changé pour tester si vous le vouliez, c'est-à-dire:
ln -sfn /opt/projectA/test/public /httpdocs/public
sans déplacer les fichiers. Ajout de -f
au cas où quelqu'un copierait ces lignes (-n
force, <=> évite certaines interactions souvent indésirables avec des liens déjà existants ou non existants).
Si vous voulez seulement que cela fonctionne, utilisez l'option A, si quelqu'un d'autre veut voir ce que vous avez fait, utilisez l'option C.
Autres conseils
L’exemple suivant, selon moi, suscité par de nombreuses personnes est le suivant. Si vous êtes dans le répertoire dans lequel vous souhaitez vider le contenu du référentiel git, exécutez:
git clone git@github.com:whatever .
Le ". " à la fin, spécifie le dossier en cours comme dossier de sortie.
Allez dans le dossier. Si le dossier est vide, alors:
git clone git@github.com:whatever .
sinon
git init
git remote add origin PATH/TO/REPO
git fetch
git checkout -t origin/master
Clonage du référentiel Git de base
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, procédez 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 version la plus récente. Si vous allez dans le répertoire open_framework qui vient d'être créé, vous & # 8217; vous y verrez les fichiers de projet prêts à être utilisés ou travaillé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 dispose d’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 utilisateur @ serveur: /path.git, qui utilise le protocole de transfert SSH.
Lorsque vous déplacez les fichiers là où vous les souhaitez, 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
ne sont que les versions de la validation en cours d'extraction (branche principale par défaut).
Cloner:
git clone git@jittre.unfuddle.com:jittre/name.git
Clonez la & "branche spécifique" & ";:
.git clone -b [branch-name] git@jittre.unfuddle.com:jittre/name.git
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 git@github.com:whatever
Bien qu'il crée toujours un whatever
dossier par dessus, vous devez donc utiliser la syntaxe suivante pour cloner le contenu du référentiel dans le répertoire en cours:
git git@github.com:whatever .
Notez que le clonage dans un répertoire existant est uniquement autorisé lorsque le répertoire est vide .
Puisque vous clonez dans un dossier accessible au public, séparez votre référentiel Git de votre arbre de travail en utilisant --separate-git-dir=<git dir>
ou en excluant .git
le dossier dans la configuration de votre serveur Web (par exemple, dans un fichier .htaccess
).
Si vous souhaitez cloner dans le dossier actuel, essayez ceci:
git clone https://github.com/example/example.git ./
Pour cloner vers Répertoire de travail actuel :
Le clone git https://github.com/link.git
Pour cloner vers un autre répertoire :
Le clone git https://github.com/link.git ./Folder1/ Dossier2
J'espère que ça vous aidera:
Assurez-vous de supprimer le référentiel .git si vous essayez d'extraire un élément dans le répertoire en cours.
rm -rf .git
alors git clone https://github.com/symfony/symfony-sandbox.git
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: Configuration d'un référentiel
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 existe probablement un moyen plus élégant de le faire, mais j’ai trouvé que cela é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 coquille comme le poisson, le xyzsh, le fizsh, etc.
. Modifiez ~/.zshrc
, /.bashrc
, etc. avec votre éditeur préféré (le mien est Leafpad, je voudrais donc écrire $ leafpad ~/.zshrc
).
Cependant, ma préférence personnelle est de créer un plug-in 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 "
(À 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 plug-in 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 "
####################################
Enregistrez votre plug-in oh-my-zsh et exécutez allsource
. Si cela ne semble pas fonctionner, exécutez 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 <=> à partir de maintenant.
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 . N'hésitez pas à les modifier et à les améliorer en fonction de vos besoins.
Pour une raison quelconque, cette syntaxe ne se démarque pas:
git clone repo-url [folder]
Ce dossier est un chemin facultatif menant au dossier local (qui sera un référentiel local).
Git clone
va également pull
coder 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
Si vous utilisez ssh
pour git cloning
, vous pouvez utiliser la commande suivante.
git -C path clone git@github.com:path_to_repo.git
par exemple:
git -C /home/ubuntu/ clone git@github.com:kennethreitz/requests.git
tirerait le référentiel git pour requests
sur votre /home/ubuntu/
chemin.
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 .
Je vous recommanderai de suivre le lien suivant:
https://help.github.com/en/articles/cloning-a-repository
Si vous obtenez le message d'erreur suivant lors de la commande de la commande git clone URL
fatal: unable to access 'URL': Could not resolve host: github.com
Utilisez ensuite la commande suivante pour résoudre ce problème:
git config --global --unset https.proxy
En ce qui concerne cette ligne du message d'origine:
& "Je sais comment déplacer les fichiers après avoir cloné le référentiel, mais cela semble casser git & ";
Je suis capable de le faire et je ne vois aucun problème avec mes opérations d'ajout, de validation, de diffusion ou d'extraction.
Cette approche est décrite ci-dessus, mais n’est pas décomposée en étapes. Voici les étapes qui me conviennent:
- cloner le référentiel dans un nouveau dossier temporaire
- cd dans le dossier racine que vous venez de cloner localement
- copiez tout le contenu du dossier, y compris le répertoire /.git - dans le dossier existant de votre choix; (par exemple, un projet Eclipse que vous souhaitez fusionner avec votre référentiel)
Le dossier existant dans lequel vous venez de copier les fichiers est maintenant prêt à interagir avec git.