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