Exécuter git init deux fois initialise-t-il un référentiel ou réinitialise-t-il un référentiel existant?

166

Qu'arrive-t-il à un référentiel git existant lorsque vous émettez à git initnouveau?

J'ai créé un référentiel avec git init. Créer un fichier, ajouter, valider. Vérifiez le statut (rien à valider). Ensuite, j'ai créé un autre fichier, vérifiez l'état et je peux voir qu'il n'est pas suivi comme prévu.

Ensuite, disons par erreur, je lance à git initnouveau et je reçois le message Réinitialiser le référentiel Git existant .

Essayé git status, mais cela montre la même chose. Alors que se passe-t-il vraiment?

La réinitialisation d'un référentiel git existant de cette manière peut-elle être nuisible ou utile? Pourquoi pouvons-nous à l' git initintérieur d'un référentiel existant?

M. L
la source
FWIW en utilisant Xcode J'ai d'abord créé le référentiel local pour la première fois, puis lorsque je suis allé sur Github.com pour créer un nouveau référentiel distant. Ce que j'ai fait, puis pour lier mon référentiel local à ma télécommande ... Je suivais ses étapes (fournies sur Github.com), sa première étape est celle git initque j'ai faite. C'était probablement la deuxième fois après que Xcode l'ait créé automatiquement
Honey

Réponses:

212

À partir de la documentation git :

Exécuter git init dans un référentiel existant est sûr. Il n'écrasera pas les choses qui sont déjà là. La principale raison de réexécuter git init est de récupérer les modèles nouvellement ajoutés.

coreyward
la source
110

Ceci est décrit dans la git initdocumentation:

Exécuter git init dans un référentiel existant est sûr. Il n'écrasera pas les choses qui sont déjà là. La principale raison de réexécuter git init est de récupérer les modèles nouvellement ajoutés.

Greg Hewgill
la source
47

Depuis la v1.7.5 ( b57fb80a7 ), git initdans un dépôt existant a également permis de déplacer le .gitrépertoire:

La principale raison de réexécuter 'git init' est de récupérer les nouveaux modèles ajoutés (ou de déplacer le référentiel vers un autre endroit si --separate-git-dir est donné).

'Ramasser les modèles nouvellement ajoutés' signifie que tous les modèles qui n'ont pas déjà été copiés du répertoire des modèles seront maintenant copiés dans le répertoire git existant.

«Déplacer le référentiel vers un autre endroit» signifie que, s'il --separate-git-dirpointe vers un autre endroit, le .gitrépertoire existant y sera déplacé et remplacé par un lien.

Joe
la source
-1

cela signifie que vous avez déjà initialisé le git. car vous téléchargez déjà un fichier sur github à partir de ce chemin. vous vérifiez le chemin puis un dossier est créé sous le nom de .git. C'est pourquoi vous ne réessayez pas d'initialiser git. vous pouvez passer directement à l'étape suivante

git add.

Dossier Git

Khadim Rana
la source