Clonage d'un dépôt Github privé

226

J'ai un référentiel privé sur Github pour un projet sur lequel je travaille. Jusqu'à présent, je n'avais travaillé que sur mon bureau à domicile, mais je viens d'acheter un ordinateur portable et j'essaie de le configurer pour pouvoir travailler sur le projet à partir de l'un ou l'autre ordinateur et pousser / tirer les modifications.

J'ai ajouté une nouvelle clé SSH à mon compte Github pour l'ordinateur portable et j'ai réussi à cloner et à apporter des modifications à un référentiel de test public que j'ai configuré. Cependant, je n'ai pas pu cloner le dépôt privé. Y a-t-il quelque chose de spécial que je dois faire dans la ligne de commande afin de cloner un dépôt privé? Dois-je créer un nouveau compte GitHub pour mon ordinateur portable et me configurer en tant que collaborateur?

La commande que j'ai utilisée était git clone git://github.com/myusername/reponame.git

Salomon
la source
3
Quelle commande avez-vous utilisée pour essayer de cloner localement le dépôt privé? Quelles erreurs avez-vous rencontrées?
Ron DeVera

Réponses:

171

Les URL de clone privé prennent la forme [email protected]:username/repo.git- peut-être avez-vous dû utiliser git@plutôt que git://?

git:// Les URL sont en lecture seule, et il semble que les dépôts privés n'autorisent pas cette forme d'accès.

Mac
la source
Oui - en utilisant "[email protected]:" plutôt que "https: //" a résolu mon problème! En fait, j'ai activé 2FA en même temps, mais cela n'avait rien à voir avec cela.
leo
148

Cela a fonctionné pour moi:

git clone https://[email protected]/username/repo_name

C'était, bien sûr, après avoir ajouté ma clé SSH à Github . Je l'ai utilisé sur un serveur CentOs, si cela est nécessaire.

charlchad
la source
4
Merci pour cela. Mais je ne sais pas pourquoi cela fonctionne. N'a jamais été invité à entrer un mot de passe. Est-ce que git clone via https devrait en quelque sorte toucher mes touches ssh? Je ne pensais pas.
reinhardt
1
Bien, cela m'a permis de télécharger un dépôt privé sur Ubuntu.
Nino Škopac
Pourquoi cela fonctionne mais [email protected]: username / repo.git pas?
diimdeep
@diimdeep Git et d'autres outils, utilisent souvent le protocole git: pour accéder aux fichiers dans des référentiels distants. Certaines configurations de pare-feu bloquent les URL git: //, ce qui entraîne des erreurs lors de la tentative de clonage de référentiels ou de téléchargement de dépendances. (Par exemple, les pare-feu d'entreprise sont "notoires" pour bloquer git:.) Si vous rencontrez ce problème, vous pouvez forcer l'utilisation de https: à la place, en exécutant la commande suivante: git config --global url. "Https: // ".insteadOf git: //
charlchad
1
Dans certains cas, si vous êtes invité à entrer un mot de passe puis refusé, cela peut être dû au fait que vous devez fournir un "jeton d'accès personnel" au lieu de votre mot de passe de connexion GitHub. [1] help.github.com/articles/which-remote-url-should-i-use [2] help.github.com/articles/…
David Winiecki
71

Cela a fonctionné pour moi:

git clone https://username:[email protected]/username/repo_name.git
izik f
la source
5
cela pose problème avec les mots de passe de caractères spéciaux, laisse votre mot de passe dans les journaux et ne semble plus fonctionner
pcnate
5
Essayez ceci - Vous serez invité à entrer le mot de passe de votre compte. Pas de soucis de mot de passe apprenant à l'historique ou aux journaux. git clone https://[email protected]/username/repo_name.git
Vinay
64

J'ai rencontré ce problème plusieurs fois et chaque fois que j'atterris sur cette page, j'ai tout essayé et échoué!

C'est parce que j'ai activé 2FA !!!

Selon https://help.github.com/articles/which-remote-url-should-i-use/#when-2fa-is-enabled

Si vous avez activé l'  authentification à deux facteurs ou si vous accédez à une organisation qui utilise l'  authentification unique SAML , vous devez  fournir un jeton d'accès personnel  au lieu de saisir votre mot de passe pour HTTPS Git.

  1. Suivez ce lien et créez un jeton d'accès
  2. git clone https://github.com/username/repo_name.git (Le lien git repo par défaut est assez bon!)
  3. Entrez votre nom d'utilisateur et utilisez le jeton d'accès comme mot de passe !!

Mettre à jour:

  • Si cela ne vous dérange pas d'exposer votre jeton d'accès dans la ligne de commande, vous pouvez également coller le jeton d'accès en tant que nom d'utilisateur, puis appuyer sur Entrée pour entrer (pas besoin de mot de passe).
  • Vous détestez copier et coller le jeton d'accès encore et encore?
    Utilisation git config credential.helper store(ne faites pas cela sur une machine en laquelle vous n'avez pas confiance)
lzl124631x
la source
Si vous êtes sous Windows, vous pouvez installer github.com/microsoft/Git-Credential-Manager-for-Windows Puis lors du clonage d'un référentiel privé, une fenêtre d'interface utilisateur avec une connexion Github apparaît. Il vous permettra également de remplir le code 2FA. Vos informations d'identification Github seront stockées en toute sécurité.
Jirik
18

En utilisant Git pour Windows, il est plus facile d'utiliser l'URL HTTPS.

Ouvrez ensuite un shell git git clone https://github.com/user/repo. Entrez le nom d'utilisateur et le mot de passe lorsque vous y êtes invité. Pas besoin de configurer une clé SSH.

Gustavo Coelho
la source
1
Je suis d'accord avec la simplicité de ne pas avoir à configurer ssh
Félix Gagnon-Grenier
D'accord avec les autres commentaires, l'utilisation de l'URL HTTPS fonctionne parfaitement sous Windows ou Ubuntu (essayé le 116.04)
greg_data
18

Pour moi, la solution était:

git clone https://[email protected]

Ici, vous devez être le propriétaire du référentiel, mais si vous ne l'êtes pas, il ira comme

git clone https://[email protected]/ownersusername/repo_name.git

Si vous avez2FA enabled alors:

  1. Accédez aux paramètres de l'icône de profil en haut à droite ou visitez https://github.com/settings/profile
  2. Accédez à l'onglet inférieur ou accédez à https://github.com/settings/tokens
  3. Ouvrez le dernier onglet ici Jetons personnels. Et générer un jeton
  4. Copiez le jeton et exécutez git clone https://[email protected]

Lorsque vous êtes invité à entrer un mot de passe, mettez ce jeton ici. Image de génération de jeton ici

Black Mamba
la source
1
ressemble à git invite le nom d'utilisateur / mot de passe s'il n'y a pas de référentiel public avec cet URI, donc la première commande est correcte
pcnate
8

J'ai un compte d'entreprise (privé) et l'authentification à 2 facteurs activée, j'ai donc dû combiner quelques messages pour le faire fonctionner comme ci-dessous. (Prendre des notes pour que cela puisse être utile à quelqu'un avec la même situation)

Initially it was the Fatal Error. 
fatal: repository 'https:
...
remote: Repository not found.
fatal: repository 'https:

Installation du gestionnaire d'informations d'identification et mise à jour de GIT comme mentionné ici: https://codeshare.co.uk/blog/how-to-solve-the-github-error-fatal-httprequestexception-encountered/

Cela n'a pas résolu le problème car le problème est passé à ci-dessous lorsque j'ai essayé d'utiliser la commande clone comme suit:

$ git clone https://<username>:<password>@github.com/<ORG_NAME>/<PROJECT-NAME>.git

remote: Invalid username or password.
fatal: Authentication failed for 'https://

Mon mot de passe contenait $ symbol et pour une raison quelconque, la ligne de commande GIT / GIT Bash ne l'aimait pas. Je peux le voir sur l'erreur renvoyée, le texte ne contenait pas le symbole $.

fatal: Authentication failed for 'https://<username>:<password-missing-$-symbol>@github.com/<ORG_NAME>/<PROJECT-NAME>.git'

Je devais référencer ce site: https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage

Remarque: si un mot de passe incorrect est stocké pour votre compte dans le Gestionnaire d'informations d'identification Windows, il s'ajoutera également au problème. J'ai supprimé les informations d'identification github stockées de cette façon avant de passer à l'étape ci-dessous.

$ git config --global credential.helper cache
$ git clone https://<username>:<password>@github.com/<ORG_NAME>/<PROJECT-NAME>.git

Maintenant, le gestionnaire d'informations d'identification Windows est apparu. J'ai tapé mon nom d'utilisateur et mon mot de passe dans les zones de texte (ceci a accepté mon mot de passe qui avait le symbole $) et m'a demandé un code d'authentification à 2 facteurs. J'ai tapé le code d'authentification de Google Authenticator et le clone a parfaitement démarré.

un seul monde
la source
Le symbole dollar $est un caractère réservé sous Unix. Il marque le début de la récupération d'une valeur de variable avec ce nom égal à la chaîne qui suit le $symbole.
Laissez-moi y penser
Pour moi, la suppression des informations d'identification Windows a résolu le problème.
Michael Larionov
6

Lors du clonage à partir de dépôts privés avec l'activation 2FA, il y a quelques étapes simples que vous devez suivre

  1. Accédez à votre compte Git
  2. Accédez à Paramètres-> Paramètres développeur-> Jeton d'accès personnel
  3. Cliquez sur Générer un nouveau jeton
  4. Créez un jeton avec le titre que vous voulez et avec les fonctionnalités
  5. Lorsque vous clonez le référentiel privé, en utilisant git clone repoName, après avoir entré votre nom d'utilisateur, donnez un jeton d'accès personnel comme mot de passe.

Suivez les mêmes étapes lorsque vous obtenez le message d'erreur Échec de l'authentification pour le dépôt privé

ireshika piyumalie
la source
5

En réponse à la réponse de mac, vous pouvez obtenir votre URL de clone SSH sur votre page de dépôt github, en cliquant SSHsur You can clone with HTTPS, SSH, or Subversion.et en copiant l'URL.

MK Yung
la source
4

Cela a fonctionné pour moi sur mac git clone https://[email protected]:username/repo_name

Usman Hussain
la source
3

En plus de la réponse de MK Yung: assurez-vous d'ajouter la clé publique de l'endroit où vous vous déployez aux clés de déploiement du référentiel, si vous ne souhaitez pas recevoir de réponse 403 interdite.

pgcd
la source
3

Assurez-vous d'abord que vous disposez d'une clé SSH ou générez-en une à l' adresse : https://help.github.com/articles/generating-ssh-keys/

Une fois que vous avez votre clé, vous devez l'ajouter à votre compte github sur: https://github.com/settings/ssh

Pour les utilisateurs de Windows, il est utile d'exécuter git bash en tant qu'administrateur.

Maintenant, le clonage devrait fonctionner pour les référentiels privés (repo), sans avoir à mettre votre nom d'utilisateur et votre mot de passe.

gcamargo
la source
1

Si le nouvel ordinateur utilisé possède des informations d' identification différentes exécutant cette commande

git clone https://github.com/username/reponame.git

directement ne fonctionnera pas. Git tentera d'utiliser les informations d'identification stockées et ne vous demandera pas le nom d'utilisateur et le mot de passe. Étant donné que les informations d'identification ne correspondent pas, git sortira Repository not foundet l'opération de clonage échouera. J'ai résolu le problème en supprimant les anciennes informations d'identification, car je ne les utilise plus, et j'ai exécuté à nouveau la commande susmentionnée et entré le nom d'utilisateur et le mot de passe requis et cloné le dépôt privé.

Amjad
la source
1

1) essayez d'exécuter la commande avec le nom d'utilisateur et le mot de passe dans le format ci-dessous

git clone https://your_username:[email protected]/username/reponame.git

maintenant le problème comme d'autres l'ont mentionné ici, c'est quand nous avons un caractère spécial dans notre mot de passe. En Javascript, utilisez le code ci-dessous pour convertir le mot de passe avec des caractères spéciaux en encodage UTF-8.

console.log(encodeURIComponent('password@$123'));

utilisez maintenant ce mot de passe généré au lieu d'un avec des caractères spéciaux et exécutez la commande.

J'espère que ce problème sera résolu.

Santosh Kadam
la source
0

Ajoutez votre clé publique ssh de bureau dans github.

https://github.com/settings/keys

Vous pouvez cloner le dépôt sans mot de passe.

Kishore Relangi
la source
0

Si vous êtes sûr de ne pas avoir activé 2FA, vous avez la permission d'accéder au référentiel et le référentiel existe, il est possible que votre [email protected] soit connecté avec un autre compte.

pour vérifier que vous pouvez faire

ssh -T [email protected]

S'il affiche un autre compte, pour résoudre ce problème:

 ssh-add -D
 ssh-add ~/.ssh/your_rsa
 ssh -T [email protected]
 git clone [email protected]:<owner_name>/<repo_name>.git
Kexin Lu
la source
Il affiche: unknown option -T. Ma version git est2.7.4
bvdb
@bvdb mes excuses, ça aurait dû êtressh -T [email protected]
Kexin Lu
0

Si vous souhaitez y parvenir Dockerfile, les lignes ci-dessous vous aident.

ARG git_personal_token
RUN git config --global url."https://${git_personal_token}:@github.com/".insteadOf "https://github.com/"
RUN git clone https://github.com/your/project.git /project

Ensuite, nous pouvons construire avec l'argument ci-dessous.

docker build --build-arg git_personal_token={your_token} .
Youngjae
la source
0
git clone https://myusername:[email protected]/myusername/project.git

Lorsque vous essayez d'utiliser le référentiel privé du référentiel au moment où vous devez transmettre le nom d'utilisateur et le mot de passe pour cela.

divya_kanak
la source
Ce n'est pas sûr. Le dépôt cloné stocke le lien http fourni dans le fichier .git / config. Tous les commits effectués sur le référentiel local peuvent être poussés à distance sans nécessiter de nom d'utilisateur et de mot de passe. Ce qui est vraiment dangereux si vous n'êtes pas le seul utilisateur !!
Tian