Cours en cours‎ > ‎

Débuter avec GIT

Si vous ête sur windows commencer par  "Installation GIT windows"

par guillaume-barillot.com

Initialiser un repo Git pour les nuls


Admettons que vous soyez dans la situtation suivante :

  • Vous disposez d'un serveur dédié sur lequel vous hébergez (ou voulez héberger) une working copy et votre repository SVN
  • Vous voulez quitter SVN pour GIT, mais n'êtes pas encore un expert en la matière
  • Vous n'avez que faire de l'historique de vos commit, de vos branches... vous voulez juste repartir de 0 avec Git (sinon, voyez plutôt Git-SVN)
  • Vous souhaitez simplement créer un dépot Git et démarrer du bon pied rapidement

Vous êtes aussi dans ce même cas de figure ?! Dans cette exemple, j'utilise deux machines : @server via SSH et @local qui est mon PC, au chaud chez moi.


# Côté serveur, on commence par se créer un répertoire qui hébergera le serveur "bare" (=le dépot SVN)

guillaume@server:$ mkdir /var/local/git/repos/my_app

# On initialise ce repo

guillaume@server:$ cd /var/local/git/repos/my_app && git --bare init
Initialized empty Git repository in /var/local/git/repos/my_app/

# Nous voila maintenant avec un repo GIT "bare", un peu comme un repo SVN. Si on regarde à l'intérieur, ça donne ça :

$ ls
branches config description HEAD hooks info objects refs

# On revient chez soi, en local, et on supprime récursivement tous les .svn du projet

guillaume@local:$ cd /home/guillaume/my_app/ 
guillaume@local:$ rm -rf `find . -type d -name .svn`

# Puis on initialise le projet, cela va créer un répertoire .git à la racine, contenant -entre autre- les fichiers de conf

guillaume@local:$ git init
Initialized empty Git repository in /home/guillaume/my_app/.git/

# On informe maintenant la copie locale de l'existence du repo sur notre serveur (évidemment, remplacez 81.81.81.81 par l'adresse de votre serveur). Par convention on appellera ce repo "origin"

guillaume@local:$ git remote add origin ssh://81.81.81.81/var/local/git/repos/my_app

# On informe Git des fichiers qu'il faut tracker. Dans notre cas, on ajoute tout le répertoire, soit simplement "."

guillaume@local:$ git add .

# Ok, on peut faire notre premier commit :

guillaume@local:$ git commit -a -m 'initialize repo'
[master (root-commit) 7871087] initialize repo
23 files changed, 500 insertions(+), 0 deletions(-)
create mode 100755 build.properties
create mode 100755 build.xml
.....

# On a presque terminé : il faut maintenant tout monter sur notre repo "origin", dans la branche "master" :

guillaume@local:$ git push origin master
Counting objects: 44, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (31/31), done.
Writing objects: 100% (44/44), 1.65 MiB, done.
Total 44 (delta 1), reused 0 (delta 0)
To ssh://81.81.81.81/var/local/git/repos/my_app
* [new branch] master -> master 

# Et voila ! Si on retourne sur notre serveur, on a plus qu'à "cloner" (= checkout sur SVN) notre appli :

guillaume@server:$ git clone file:///var/local/git/repos/my_app

# On peut vérifier que tout marche en faisant quelques modifs dans des fichiers en local, puis :

guillaume@local:$ git commit -a -m "Add some killer features"
[master 51401e0] add
 1 files changed, 2 insertions(+), 0 deletions(-)
 mode change 100644 => 100755 app/views/demo.html.haml

guillaume@local:$ git push
Counting objects: 13, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (7/7), 595 bytes, done.
Total 7 (delta 5), reused 0 (delta 0)
To ssh://81.81.81.81/var/local/git/repos/my_app
   ef4d530..51401e0  master -> master

# On revient sur le serveur, et on on "pull"

guillaume@server:$git pull 
remote: Counting objects: 13, done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 7 (delta 5), reused 0 (delta 0)
Unpacking objects: 100% (7/7), done.
From file:///var/local/git/repos/my_app
   ef4d530..51401e0  master     -> origin/master
Updating ef4d530..51401e0
Fast forward
 controllers/application_controller.rb     |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)
 mode change 100644 => 100755 app/views/demo.html.haml

Ce tuto est librement inspiré de celui-ci en Anglais, qui m'a beaucoup aidé à faire mes premiers pas.


Comments