git init

Cette page présentera la commande git init en détail. À la fin de cette page, vous connaîtrez la fonctionnalité de base et l'ensemble des fonctions étendues de git init. Cette présentation inclut ce qui suit :

  • Options et utilisation de git init
  • Présentation du répertoire .git
  •  Valeurs d'environnement de répertoire git init personnalisées
  • git init et git clone
  • répertoires bruts git init
  • Modèles git init

La commande git init crée un nouveau 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éer 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 des objets, des réfs et des fichiers de modèle. 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 initialisera 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 est de 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 de nouveaux projets sous contrôle de version. Git ne nécessite pas la création d'un dépôt, l'importation de fichiers et l'extraction 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 <répertoire>

Créez un dépôt Git vide dans le répertoire spécifié. L'exécution de cette commande créera un nouveau sous-répertoire appelé XX, 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 nouveau dépôt. Elle copie ensuite les données du dépôt existant, puis extrait 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 <répertoire>

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 discussion ci-dessous). Par convention, les dépôts initialisés avec le flag --bare se terminent par .git. Par exemple, la version bare d'un dépôt appelé my-project doit être stockée dans un répertoire appelé my-project.git.

L'indicateur --bare crée un dépôt qui ne dispose pas de répertoire fonctionnel, rendant impossible d'éditer les fichiers et de commiter les 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 pusher 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 installation 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 <utilisateur>@<hôte> 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 <répertoire> --template=<répertoire_modèles>

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

Les modèles vous permettent d'initialiser un nouveau dépôt avec 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 avec des hooks Git prédéfinis et initialiser vos nouveaux dépôts Git avec des hooks communs prêts à être utilisés. Pour en savoir plus sur les hooks Git, consultez la page Hooks Git.

Configuration

Toutes les configurations de git init <répertoire> acceptent un argument <répertoire>. Si vous fournissez l'argument <répertoire>, 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 annulée.

--BARE

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

--TEMPLATE=<RÉPERTOIRE_MODÈLE>

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=<RÉP GIT>

Crée un fichier texte contenant le chemin vers <rép git>. Ce fichier agit comme un lien vers le répertoire .git. C'est utile si vous souhaitez stocker votre répertoire .git dans un emplacement ou disque distinct des fichiers de travail de votre projet. Voici quelques cas d'usage pour --separate-git-dir :

  • Pour 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
  • Votre historique Git occupe un espace disque très important, vous devez le migrer vers un disque haute capacité distinct.
  • Vous souhaitez avoir un projet Git dans un répertoire public 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 <rép git> spécifié.

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

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

Examples

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