git init

Cette page présente la commande git init en détail. Lorsque vous aurez terminé de la lire, vous connaîtrez le fonctionnement de base et l'ensemble des fonctionnalités étendues de git init. Cette présentation inclut ce qui suit :

  • Options et utilisation de la commande git init
  • Aperçu du répertoire .git
  • Valeurs de l'environnement de répertoire git init personnalisées
  • Comparaison de git init et de git clone
  • Dépôts bruts git init
  • Modèles git init

La commande git init crée un dépôt Git. Elle permet de convertir un projet existant, sans version en un dépôt Git ou d'initialiser un nouveau dépôt vide. La plupart des autres commandes Git ne sont pas disponibles hors d'un dépôt initialisé. Il s'agit donc généralement de la première commande que vous exécuterez dans un nouveau projet.

L'exécution de git init crée un sous-répertoire .git dans le répertoire de travail actif, qui contient toutes les métadonnées Git nécessaires pour le nouveau dépôt. Ces métadonnées incluent des sous-répertoires pour les objets, les réfs et les modèles de fichier. Un fichier HEAD est également créé et pointe vers le commit actuellement extrait.

Outre le répertoire .git, dans le répertoire racine du projet, un projet existant reste inchangé (contrairement à SVN, Git ne nécessite pas de sous-répertoire .git dans chaque sous-répertoire).

Par défaut, git init initialise la configuration Git dans le chemin d'accès au sous-répertoire .git. Le chemin d'accès au sous-répertoire peut être modifié et personnalisé si vous souhaitez le placer autre part. Vous pouvez définir la variable d'environnement $GIT_DIR sur un chemin d'accès personnalisé, où git init initialisera les fichiers de configuration Git. En outre, vous pouvez transmettre l'argument --separate-git-dir pour le même résultat. Une utilisation courante d'un sous-répertoire .git distinct consiste à garder les fichiers « dotfiles » de votre configuration système (.bashrc, .vimrc, etc.) dans le répertoire de base, tout en conservant le dossier .git autre part.

Utilisation

Comparée à SVN, la commande git init permet de créer des projets sous contrôle de version. Git ne nécessite pas la création d'un dépôt, l'importation de fichiers et le check-out d'une copie de travail. En outre, Git ne nécessite pas de serveur pré-existant, ni de privilèges administrateur. Il vous suffit d'accéder à votre sous-répertoire de projet et d'exécuter git init : vous disposez à présent d'un dépôt Git entièrement fonctionnel.

 git init

Transformez le répertoire actuel en dépôt Git. Cela permet d'ajouter un sous-répertoire .git au répertoire actuel et de commencer à enregistrer les révisions du projet.

 git init 

Créez un dépôt Git vide dans le répertoire spécifié. L'exécution de cette commande créera un sous-répertoire appelé qui contient uniquement le sous-répertoire .git.

Si vous avez déjà exécuté git init sur le répertoire d'un projet et qu'un sous-répertoire .git existe, vous pouvez à nouveau exécuter git init en toute sécurité sur le même répertoire de projet. La commande n'écrasera pas une configuration .git existante.

git init et git clone

Petite remarque : git init et git clone sont facilement confondues. À un niveau supérieur, les deux commandes permettent d'« initialiser un nouveau dépôt Git ». Toutefois, git clone dépend de git init. git clone permet de créer une copie d'un dépôt existant. En interne, git clone appelle d'abord git init pour créer un dépôt. Elle copie ensuite les données du dépôt existant, puis fait un check-out d'un nouvel ensemble de fichiers de travail. Découvrez-en plus sur la page git clone.

Dépôts bruts --- git init --bare

 git init --bare 

Initialisez un dépôt Git vide, mais omettez le répertoire de travail. Les dépôts partagés doivent toujours être créés avec le flag --bare (voir la discussion ci-dessous). Par convention, les dépôts initialisés grâce au flag --bare se terminent par .git. Par exemple, la version brute d'un dépôt appelé my-project doit être stockée dans un répertoire appelé my-project.git.

Le flag --bare crée un dépôt qui ne dispose pas de répertoire de travail, rendant impossibles les éditions de fichiers et les commits de changements dans ce répertoire. Vous créeriez un dépôt brut depuis lequel exécuter les commandes git push et git pull, mais dans lequel vous ne pourriez jamais faire de commit. Les dépôts centralisés doivent toujours être créés sous forme de dépôts bruts, car faire un push des branches dans un dépôt non brut peut écraser les changements. Songez à --bare comme à un moyen de marquer un dépôt comme un espace de stockage, par opposition à un environnement de développement. Pour la grande majorité des workflows Git, cela signifie que le dépôt centralisé est brut et les dépôts locaux des développeurs ne le sont pas.

Tutoriel Git : Dépôts bruts

Le cas d'usage le plus courant pour git init --bare consiste à créer un dépôt distant centralisé :

 ssh @ cd path/above/repo git init --bare my-project.git

D'abord, établissez une connexion SSH au serveur contenant votre dépôt centralisé. Ensuite, accédez à l'emplacement où vous souhaitez stocker le projet. Enfin, utilisez le flag --bare pour créer un dépôt de stockage centralisé. Les développeurs peuvent ensuite cloner my-project.git pour créer une copie locale sur leur machine de développement.

Modèles git init

 git init  --template=

Initialise un nouveau dépôt Git et copie les fichiers depuis le répertoire dans le dépôt.

Les modèles vous permettent d'initialiser un nouveau dépôt grâce à un sous-répertoire .git prédéfini. Vous pouvez configurer un modèle pour qu'il contienne des répertoires et des fichiers par défaut, qui seront copiés dans le sous-répertoire .git d'un nouveau dépôt. Les modèles Git par défaut se situent généralement dans un répertoire `/usr/share/git-core/templates`. Mais le chemin d'accès peut être différent sur votre machine.

Les modèles par défaut constituent une bonne référence et un parfait exemple d'utilisation des fonctionnalités de modèle. La configuration des hooks Git est une fonctionnalité puissante des modèles présentée dans les modèles par défaut. Vous pouvez créer un modèle grâce à des hooks Git prédéfinis et initialiser vos nouveaux dépôts Git grâce à des hooks communs prêts à l'emploi. Pour en savoir plus sur les hooks Git, consultez la page Hooks Git.

Configuration

Toutes les configurations de git init acceptent un argument . Si vous fournissez l'argument , la commande y est exécutée. Si ce répertoire n'existe pas, il sera créé. Outre les options et la configuration déjà évoquées, git init dispose de quelques autres options de ligne de commande. Voici la liste complète :

-Q

--QUIET

Imprime uniquement les messages « de niveau critique », les erreurs et les avertissements. Toute autre sortie est mise en silencieux.

--BARE

Crée un dépôt brut. (Reportez-vous à la section « Dépôts bruts » ci-dessus.)

--TEMPLATE=

Spécifie le répertoire à partir duquel les modèles seront utilisés. (Reportez-vous à la section « Modèles Git Init » ci-dessus.)

--SEPARATE-GIT-DIR=

Crée un fichier texte contenant le chemin d'accès à . Ce fichier fait office de lien vers le répertoire .git. C'est utile si vous souhaitez stocker votre répertoire .git dans un emplacement ou sur un lecteur distinct de celui contenant les fichiers de travail de votre projet. Voici quelques cas d'usage courants pour --separate-git-dir :

  • Pour conserver vos fichiers de configuration système « dotfiles » (.bashrc, .vimrc, etc.) dans le répertoire de base, tout en stockant le dossier .git à un autre emplacement
  • Votre historique Git prend désormais beaucoup de place sur le disque, et vous devez le déplacer vers un autre lecteur haute capacité
  • Vous souhaitez avoir un projet Git dans un répertoire accessible publiquement, comme `www:root`

Vous pouvez appeler git init --separate-git-dir sur un dépôt existant, et .git dir sera déplacé vers le chemin spécifié.

--SHARED[=(FALSE|TRUE|UMASK|GROUP|ALL|WORLD|EVERYBODY|0XXX)]

Définissez les autorisations d'accès pour le nouveau dépôt. Cela spécifie les utilisateurs et les groupes utilisant les autorisations de niveau Unix qui sont autorisés à effectuer un push/pull vers le dépôt.

Exemples

Créer un nouveau dépôt Git pour une base de code existante

 cd /path/to/code \ git init \ git add . \ git commit

Créer un nouveau dépôt brut

 git init --bare /path/to/repo.git

Créer un modèle git init et initialiser un nouveau dépôt Git depuis le modèle

 mkdir -p /path/to/template \ echo "Hello World" >> /absolute/path/to/template/README \ git init /new/repo/path --template=/absolute/path/to/template \ cd /new/repo/path \ cat /new/repo/path/README

Prêt à découvrir Git ?

Essayez ce tutoriel interactif.

Démarrez maintenant