aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--serveur git debian.txt77
-rw-r--r--tuto git.txt121
2 files changed, 198 insertions, 0 deletions
diff --git a/serveur git debian.txt b/serveur git debian.txt
new file mode 100644
index 0000000..5bc1485
--- /dev/null
+++ b/serveur git debian.txt
@@ -0,0 +1,77 @@
1Serveur Git sur Debian
2
31/ Installer le paquet git.
4On a aussi besoin du serveur ssh qu'on utilisera des deux manières (normale et en SFTP) et sans droit root (sauf pour l'installation là tout de suite).
5On prévoira aussi des sauvegardes régulières, etc. Perdre du code, c'est moche.
6
72/ Créer un dossier pour git (avec mkdir), quelques suggestions:
8/opt/git
9/var/data/git
10/home/git
11
12La dernière commande possibilité concerne le cas (pas forcément souhaitable) où on crée un utilisateur nommé git (taper "adduser git"), dont le mot de passe sera connu de tous les utilisateurs.
13
14J'ai choisi de le mettre dans /var/data parce que j'y ai déjà les données d'un site apache. Et puis c'est pas loind des sites web qui sont dans /var/www.
15
163/ Y créer un dossier pour le dépôt:
17mkdir /var/data/git/my_repos.git
18
19Je lui ai donné le nom "par convention": my_repos.git, bien que nommer les dépôts par projet ou par utilisateur me semblait plus logique. On pourra toujours en créer d'autre plus tard.
20
21Mon but est d'atteindre un dossier ou un autre par une adresse du type: git.ordipolo.fr/nom_du_dépôt.
22Il faudrait aussi que le dossier supporte deux types de clients git: l'appli console ou appli graphique normale et éventuellement plus tard un site apache/php.
23
244/ Concernant les droits, je ferais une suggestion: On a besoin que n'importe quel utilisateur puisse écrire dans my_repos.git, et notamment l'utilisateur du serveur apache "www-data". Ainsi par sécurité, on va cacher le dossier de niveau inférieur, ce qui nous fait:
25chmod 711 /var/data/git
26chmod 777 /var/data/git/my_repos.git
27Les utilisateurs devraient ainsi pouvoir atteindre le dépôt et placer des projets.
28Inconvénient: il faut être root pour créer un nouveau dépôt.
29
30Ayant créé ces dossiers en tant que root, il reste bien le propriétaire des deux dossiers.
31
32Nous pouvons maintenant nous déconnecter du compte root, taper "exit" ou faire un "Ctrl + d"
33
345/ Initialiser le dépôt depuis ssh
35cd /var/data/git/my_repos.git
36git init --bare
37
38Noter bien le paramètre --bare qui sert à initialiser un projet vide.
39C'est ce qu'il faut faire sur un serveur, on placera les fichiers dedans ensuite.
40Un client n'a lui pas besoin de ce paramètre.
41
42Si on ajoute --shared, le dossier est autorisé en écriture au groupe git.
43
44Nous pouvons maintenant nous déconnecter si nous étions connecté avec ssh.
45Le dépôt est utilisable par les clients.
46Ils peuvent procéder comme avec n'importe quel serveur git.
47
486/ Création d'un dépôt local côté client.
49
50Configuration prérequise (globale signifie pour tous dépôts):
51git config --global user.name "mon nom"
52git config --global user.email "mon_e-mail@exemple.com"
53git config --global init.defaultBranch master
54
55Un utilisateur crée un projet 'presque vide':
56mkdir monprojet
57cd monproject
58git init
59Ajouter au moins un fichier au projet (le push échoue à vide)
60git add "fichier"
61git commit -m 'première validation'
62git remote add origin polo@ordipolo.fr:/var/data/git/tuto_git
63git push origin master
64
65Ce que tout le mode va faire ensuite:
66git clone mon_nom@ordipolo.fr:/var/data/git/tuto_git
67cd projet
68nano "fichier"
69git commit -am 'correction du fichier "fichier"'
70git push origin master
71
72Note: avec la syntaxe "polo@ordipolo.fr:/chemin/..." on comprend que ssh est utilisé.
73C'est la méthode recommandée.
74Autres méthode:
75- connexion locale avec le chemin sans l'identifiant et le nom du serveur: utile si on utilise NFS.
76- connexion git: non sécurisé mais plus rapide, intéressant pour un dépôt public.
77
diff --git a/tuto git.txt b/tuto git.txt
new file mode 100644
index 0000000..8b950e6
--- /dev/null
+++ b/tuto git.txt
@@ -0,0 +1,121 @@
1cours git openclassrooms
2
3https://openclassrooms.com/fr/courses/5641721-utilisez-git-et-github-pour-vos-projets-de-developpement
4https://wiki.archlinux.org/index.php/git
5
6
7Git est un logiciel qui sert à gérer du code source. Ces fonctionnalités sont
8- d'héberger du code:
9- le contrôle de versions
10- le travail collaboratif
11En gros, il garde le code source d'un projet en gardant les anciennes versions,
12De plus, il note quel utilisateur à déposé quel code.
13Un code peut donc être vérifié par tout le monde avant que soit mis à jour le fichier principal.
14
15C'est un système distribué, il est possible de se connecter à n'importe quel dépôt de la même manière.
16Il sont interconnectés et apparaissent à l'utilisateur comme un seul serveur.
17
18
19Configuration avec la console.
20
21On doit d'abord donné un nom d'utilisateur et un mot de passe:
22git config --global user.name "John Doe"
23git config --global user.email johndoe@example.com''
24
25Pour activer les couleurs:
26git config --global color.diff auto
27git config --global color.status auto
28git config --global color.branch auto
29
30Choix d'un éditeur (par défaut vim, on peut en choisir un graphique):
31git config --global core.editor nano
32git config --global merge.tool vimdiff
33
34Pour le master se nomme toujours master:
35git config --global init.defaultBranch master
36
37Pour afficher toutes les règles choisies:
38git config --list
39
40
41Aspect général de l'utilisation de git.
42
431/ Créer un dépôt, on a pour ça deux possibilités:
44- créer un dépôt local
45- Créer un compte github (ou autre) et "forker" un projet (open source du coup).
46
472/ Sur son PC, créer un dossier avec le nom du projet, puis initialiser:
48 mkdir projet
49 cd projet
50 git init
51Ce "projet" peut être perso (et hébergé sur github ou autre) ou un projet open source auquel on contribue.
52Il contient maintenant un dossier caché: .git
53
543/ récuperer l'URL du projet (bouton vert clone or download)
55et lier le projet à notre dépôt local avec la commande:
56 git remote add OC https://github.com/OpenClassrooms-Student-Center/ProjetOpenSource.git
57
584/ cloner le projet sur son propre dépôt github et entrer dedans:
59 git clone https://github.com/OpenClassrooms-Student-Center/ProjetOpenSource.git
60 cd ProjetOpenSource
61Ce sous-dossier contient aussi un dossier caché .git
62
63L'ensemble des fichiers et dossiers du projet est visible avec l'explorateur de fichiers.
64Le terminal quand à lui va nous afficher des branches.
65Au début, on a juste le "master", c'est à dire la version d'origine, on ne la modifiera jamais.
66
675/ Créer une branche sur laquelle on codera:
68 git branch modifs
69
70Lorsque le nouveau code sera satisfaisant, on pourra chercher à l'ajouter au "master".
71Git est justement capable de fusionner proprement l'ancien code avec le nouveau
72en sachant quelles sont les portions qui ont changé et si il y a des conflits entre branches.
73Si on travaille à plusieurs, on confira une partie du projet à chaque personne, sans croisement.
74
75Pour connaître les branches d'un projet:
76 git branch
77J'obtients:
78 * master
79 modifs
80Les fichiers que je vois dans l'explorateur de fichiers sont donc ceux du master.
81
826/ Il est temps de coder!
83On passe d'une branche à l'autre:.
84 git checkout modifs
85 git checkout master
86Les fichiers visibles avec l'explorateur de fichiers sont maintenant ceux de la branche modifs.
87Je suis dans une sorte de monde parallèle où je peux coder sans que ça impacte les originaux,
88Je suis physiquement toujours dans le même dossier, mais dans une autre version de celui-ci.
89
90projet
91 |-> .git
92 |-> nom_du_dossier cloné
93 |-> .git
94 |-> fichiers & dossiers sources
95
967/ Quand j'ai fini de coder, j'enregistre les changements dans git:
97 git commit -m "nom descriptif pour s'y retrouver"
98Le master ne change pas, ce qu'on vient de faire est une sorte de photo de la branche à un instant T.
99
1008/ Pour mettre à jour le master distant:
101 git push
102Le mode de passe du compte sur le serveur est demandé.
103
1049/ Demander au responsable du projet open source d'intégrer notre travail au projet.
105Lui laisser un commentaire avec des explications sur les "améliorations" apportées,
106le responsable du projet acceptera ou non la mise à jour.
107On appelle ça une "pull request".
108
109
110 projet open source
111 | ^
112 fork pull request
113 v |
114 dépôt perso distant
115 / ^
116 clonage commit + push
117 v |
118dépôt local master => dépôt local branche
119
120
121Travailler en local.