# Git/Windows

* Principes
* Apprendre à travailler avec Git
** Avant de commencer : installation et configuration de Git
** Création de votre dépôt local
** Visualiser le contenu de votre dépôt local
** Premiers pas
** Gestion des branches
** Synchroniser le dépôt local avec le dépôt distant
* Fonctionnalités avancées
** Étiquetage (tags)
** Remise (stash)
** Recombinaison (rebase)
** Sous-modules et Super-projets
** Structure interne
** Pull-request
* Recettes
** Exclure des fichiers du dépôt
** Écrire des messages de commit
* Environnement
** Intégration dans les IDEs
** Améliorer sa productivité en configurant Git
** Git sous Linux
** Git sous Windows
** Forges
*** GitLab
*** GitHub
*** Bitbucket
* Git et Subversion (svn)
** Passer de Subversion à Git
** Travailler avec Git local et un dépôt Subversion distant
** Participer au développement de Wikimédia (Gerrit)
* Problèmes connus
* Ressources externes
* Principes
* Apprendre à travailler avec Git
** Avant de commencer : installation et configuration de Git
** Création de votre dépôt local
** Visualiser le contenu de votre dépôt local
** Premiers pas
** Gestion des branches
** Synchroniser le dépôt local avec le dépôt distant
* Fonctionnalités avancées
** Étiquetage (tags)
** Remise (stash)
** Recombinaison (rebase)
** Sous-modules et Super-projets
** Structure interne
** Pull-request
* Recettes
** Exclure des fichiers du dépôt
** Écrire des messages de commit
* Environnement
** Intégration dans les IDEs
** Améliorer sa productivité en configurant Git
** Git sous Linux
** Git sous Windows
** Forges
*** GitLab
*** GitHub
*** Bitbucket
* Git et Subversion (svn)
** Passer de Subversion à Git
** Travailler avec Git local et un dépôt Subversion distant
** Participer au développement de Wikimédia (Gerrit)
* Problèmes connus
* Ressources externes
[ Modifier le sommaire ]

## Configuration

Après installation, trois raccourcis sont accessibles dans le menu démarrer :
* Git Bash : langage Unix.
* Git CMD : langage DOS.
* Git GUI : interface graphique.
Pour que Git se positionne par défaut dans le répertoire de votre choix à chaque ouverture, sous Windows faire un clic droit sur son raccourci, puis modifier le chemin du champ "démarrer dans".

## TortoiseGit

TortoiseGit est un client pour Git qui permet de gérer ses dépôts depuis l'explorateur Windows.
* Options (clic droit d'un dossier)
* Clone
* Commit
* Push
La vue des synchronisations permet de consulter la liste des fichiers modifiés (Out ChangeList) avec le différentiel dans chacun si on double-clique dessus (dans une fenêtre TortoiseGitMerge par défaut).
Elle permet aussi d'ouvrir l'option Settings en cliquant sur Manage. Pour enregistrer une connexion dans ces paramètres, cliquer sur le sous-menu de Git appelé Remote (s'il n’apparaît pas, sortir et sélectionner un répertoire avant d'y retourner). L'URL du dépôt peut être de la forme :
* ssh://depot@depot.example.com/home/depot/. Mot de passe à entrer chaque connexion, ou utilisation d'une clé SSH.
* http://depot.example.com/home/depot/. Mot de passe à entrer chaque connexion, ou configuration de netrc over HTTP avec cURL.
En cas d'erreurs SSH, se reporter au wikilivre Le système d'exploitation GNU-Linux/Le serveur de shell distant SSH#Problèmes connus.
Une fois installé, le processus TortoiseGit se lance à chaque démarrage et est susceptible de bloquer la suppression de fichiers par l'explorateur.

## Modifier les permissions d'un fichier

Windows ne gère pas les permissions unix/linux des fichiers, permettant notamment de rendre exécutable un script bash. Cependant, il est possible de modifier les permissions des fichiers au niveau staged de Git, de deux manières différentes. Dans les deux cas, comme tout changement au niveau staged, il faudra ensuite commiter les changements, et potentiellement pousser la modification sur le dépôt distant.

### Avec TortoiseGit installé

Si TortoiseGit est installé, les permissions sont modifiables dans la boîte de dialogue standard des propriétés du fichier par un clic droit sur le fichier, menu "Propriétés", onglet "Git".

### En utilisant Git Bash

Dans un terminal Git Bash :
* Changer le répertoire courant pour celui contenant les fichiers dont les permissions doivent être modifiées.
* Entrer la commande suivante pour voir les permissions actuelles :
    git ls-files --stage
* Entrer la commande suivante pour modifier les permissions d'un fichier, en les spécifiant avec l'option --chmod :
    git update-index --chmod=+x script.sh

## Références

* ↑ http://www.mavetju.org/unix/netrc.php
* ↑ https://curl.haxx.se/docs/manual.html