Sur Windows, il est conseillé d'installer Git et d'utiliser Git Bash qui est un shell disposant des commandes Git. Il gère l'auto-complétion au niveau des commandes Git et des noms de branches et de fichiers. L'installation de Git contient également le programme
gitk
qui permet d'avoir une visualisation de son dépôt.
Création d'un projet vide
Nous créons un répertoire vide pour notre projet. Dans notre exmple, nous créons le répertoireproject
dans c:/git
.
$ mkdir project $ cd project
Création d'un dépôt local - git init
Nous créons un dépôt en local.$ git init Initialized empty Git repository in c:/git/project/.git/L'invité de commandes indique maintenant que nous sommes sur la branche master du projet via le nom entre parenthèses :
/c/git/project (master)
gitk
Nous pouvons une visualisation de notre projet grâce àgitk
.$ gitk --allLe message "Aucun commit sélectionné" apparaît : notre dépôt local est vide.
Nous fermons la fenêtre
gitk
.Premier commit - git commit
Nous créons maintenant notre premier fichier du projet :$ echo "State 1" > file.txtLa commande
git status
nous indique que le fichier file.txt
est untracked
, c'est à dire qu'il n'est pas suivi par git.$ git status On branch master Initial commit Untracked files: (use "git add <file>..." to include in what will be committed) file.txt nothing added to commit but untracked files present (use "git add" to track)Nous ajoutons le fichier pour qu'il soit présent au prochain commit :
$ git add file.txtLa commande
git status
montre que le fichier est bien pris en compte par Git :$ git status On branch master Initial commit Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: file.txtNous effectuons notre premier commit :
$ git commit -am "First commit"
[master (root-commit) 7a0e657] First commit
1 file changed, 1 insertion(+)
create mode 100644 file.txt
gitk
Nous pouvons ouvrirgitk
pour voir le commit du fichier :$ gitk --all
master
apparaît : il s'agit de la branche principale et par défaut du dépôt.Le point jaune indique que nous nous situons sur cette branche
master
Branche
La branchemaster
est la branche principale du projet. Chaque développement de fonctionnalités se feront sur des branches séparées. Les modifications effectuées sur ces branches seront ensuite reportées sur la branche master
.
Création d'une branche - git checkout -b
Nous créons une nouvelle branche à partir de la branchemaster
pour effectuer les nouveaux développements.$ git checkout -b branch_1
Switched to a new branch 'branch_1'
A la place de (master)
, l'invité de commande indique maintenant entre parenthèse le nom de la nouvelle branche (branch_1)
.gitk
gitk
a ajouté un marqueur pour la branche branch_1
sur la même ligne que la branche master
. Ceci indique que la branche branch_1
n'a pas de modification par rapport à la branche master
: branch_1
qui est au même niveau que sur la branche master
Modification de fichier
Nous pouvons effectuer une modification de notre fichierfile.txt
:$ echo "State 2" > file.txtLa commande
git status
indique que le fichier file.txt
a été modifié :$ git status
On branch branch_1
Changes not staged for commit:
(use "git add ..." to update what will be committed)
(use "git checkout -- ..." to discard changes in working directory)
modified: file.txt
no changes added to commit (use "git add" and/or "git commit -a")
gitk
gitk
indique que des modifications ont été effectuées mais non pas été commitées :Annuler des modifications non commitées - git checkout [file]
Nous souhaitons annuler les modifications effectuées sur un fichier.
Nous pouvons utiliser la commande git checkout
en indiquant le nom du fichier :
$ git checkout file.txt
Commiter les modifications du fichier - git commit
Nous effectuons un commit du fichierfile.txt
sur la branche branch_1
:$ git commit -am "Commit 2"
[branch_1 fbd30a6] Commit 2
1 file changed, 1 insertion(+), 1 deletion(-)
gitk
gitk
affiche deux points : le point de la branche branch_1
est avant celui de la branche master
. Ceci indique que la branche branch_1
contient des modifications supplémentaires par rapport à la branche master
.Le point jaune indique que nous nous situons sur la branche
branch_1
:
gitk
affiche également les modifications effectuées sur le fichier file.txt
.
Fusionner la branche avec le master - git merge
Pour reporter les modifications de la branche sur le master, nous utilisons la commandegit merge [nom branche]
.Nous nous plaçons sur la branche master :
git checkout masterDans
gitk
, le point jaune se situe maintenant sur la branche master : master
, nous pouvons lancer la commande git merge
pour reporter les modifications situées de la branche branch_1
sur cette branche master
.La commande
git merge
va également modifier le dépôt local (pas besoin de faire de commit)$ git merge branch_1
Updating bcc9047..d76b0e3
Fast-forward
file.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
gitk
indique que la branche master
est au même niveau que la branche branch_1
, c'est à dire que le master
a le même contenu que la branche branch_1
.
file.txt
a été modifié et correspond au contenu de la branche branch_1
.Tagguer une version - git tag
Le tag d'une version permet d'avoir une version à l'instant "t" de tous les fichiers du dépôt.Nous créons un tag disposant d'un nom (= annotation) qui sera visible en jaune dans
gitk
:git tag -a [nom tag] -m '[message tag]'Exemple :
git tag -a v1.0 -m 'my version 1.0'
git checkout [nom tag]Cependant les fichiers modifiés ne pourront pas être commités sur le tag. Il est nécessaire de créer une branche de travail auparavant via
git checkout -b
et à merger ensuite cette branche sur le master.En conclusion, la branche master continue à évoluer, alors que le tag est figé.
Conclusion
Nous venons de voir une utilisation de Git en local pour nous familiariser avec les commandes de base.
L'étape suivante maintenant est d'utiliser Git avec un serveur distant comme par exemple avec Github.