Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
git_tutorial
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
orestis.malaspin
git_tutorial
Commits
e16d117b
Verified
Commit
e16d117b
authored
7 months ago
by
orestis.malaspin
Browse files
Options
Downloads
Patches
Plain Diff
updated for 2024
parent
81edc0f2
No related branches found
No related tags found
No related merge requests found
Pipeline
#36326
passed
7 months ago
Stage: test
Changes
1
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
git_tutorial.md
+68
-58
68 additions, 58 deletions
git_tutorial.md
with
68 additions
and
58 deletions
git_tutorial.md
+
68
−
58
View file @
e16d117b
...
...
@@ -5,17 +5,17 @@
# Qu'est-ce que Git?
-
Git est un outil de gestion de versions (dév. par L. Torvalds).
*
Cela évite d'avoir à gérer les fichiers d'un projet comme:
-
Cela évite d'avoir à gérer les fichiers d'un projet comme:
-
fichier.c
-
fichier_10_3_2020.c
-
fichier_10_3_2020_16h.c
-
fichier_10_3_2020_16h_Malaspinas.c
-
fichier_10_3_2020_16h_Albuquerque.c
*
L'historique est accessible à tout moment.
*
Difficile d'écraser le mauvais fichier lors d'une synchronisation.
-
L'historique est accessible à tout moment.
-
Difficile d'écraser le mauvais fichier lors d'une synchronisation.
-
Possibilité de découpler le développement dans un projet.
*
Fusionne les modifications non-conflictuelles automatiquement.
*
Un projet peut avoir différentes
*branches*
de développement (on peut développer une nouvelle version et faire des corrections de bug en parallèle).
-
Fusionne les modifications non-conflictuelles automatiquement.
-
Un projet peut avoir différentes
*branches*
de développement (on peut développer une nouvelle version et faire des corrections de bug en parallèle).
-
**Permet le travail de plusieurs développeurs sur le même projet!**
# Principe de fonctionnement de Git (1/3)
...
...
@@ -43,14 +43,14 @@ Mais, typiquement un projet git possède un serveur "officiel" (centralisé):
# A hepia
*
<https://gitedu.hesge.ch>
, instance de
`gitlab`
.
*
**Attention:**
`gitlab`
ou
`github`
ce n'est pas
`git`
.
*
Connection aux repos via
`https`
(identifiants à rentrer à chaque fois),
*
ou via
`ssh`
(la vie est quand même plus simple).
*
Configurons ça ensemble:
*
`ssh-keygen`
(mettre un mot de passe si vous voulez)
*
copier le contenu de
`~/.ssh/id_rsa.pub`
dans
`preferences->ssh keys`
*
cliquer sur
`Add key`
-
<https://gitedu.hesge.ch>
, instance de
`gitlab`
.
-
**Attention:**
`gitlab`
ou
`github`
ce n'est pas
`git`
.
-
Connection aux repos via
`https`
(identifiants à rentrer à chaque fois),
-
ou via
`ssh`
(la vie est quand même plus simple).
-
Configurons ça ensemble:
-
`ssh-keygen`
(mettre un mot de passe si vous voulez)
-
copier le contenu de
`~/.ssh/id_rsa.pub`
dans
`preferences->ssh keys`
-
cliquer sur
`Add key`
# Exemple de fonctionnement
...
...
@@ -77,6 +77,7 @@ $ cd tutorial
2.
Ajout du
`premierfichier.c`
aux fichiers suivis par git.
3.
*Commit*
du fichier ajouté à l'historique des modifications.
4.
*Push*
de l'état de l'historique sur le serveur.
```
bash
[
tutorial]
$
echo
Hello World
>
premierfichier.c
[
tutorial]
$
git status
...
...
@@ -138,14 +139,12 @@ To ssh://ssh.hesge.ch:10572/orestis.malaspin/tutorial.git
## Recommandations
*
Faire des
*commits*
réguliers (ne pas attendre d'avoir un projet qui fonctionne complètement).
*
Mettre des messages de
*commit*
qui font du sens.
*
Éviter d'ajouter de fichiers binaires (prennent de la place).
*
Les fichiers binaires sont générables par l'utilisateur du projet.
*
Éviter de faire
`git add .`
*
Utiliser les fichiers
`.gitignore`
pour se protéger.
-
Faire des
*commits*
réguliers (ne pas attendre d'avoir un projet qui fonctionne complètement).
-
Mettre des messages de
*commit*
qui font du sens.
-
Éviter d'ajouter de fichiers binaires (prennent de la place).
-
Les fichiers binaires sont générables par l'utilisateur du projet.
-
Éviter de faire
`git add .`
-
Utiliser les fichiers
`.gitignore`
pour se protéger.
# Modification de fichiers dans l'historique (1/3)
...
...
@@ -353,12 +352,12 @@ Automatic merge failed; fix conflicts and then commit the result.
# Un `git push` par erreur
*
Un
`git push`
est très difficile à "effacer".
*
Cela revient à
*réécrire*
l'historique de votre projet.
*
Cela est
*dangereux*
, surtout quand on travail à plusieurs.
*
Le plus simple est de revenir à une version antérieure et faire un nouveau
-
Un
`git push`
est très difficile à "effacer".
-
Cela revient à
*réécrire*
l'historique de votre projet.
-
Cela est
*dangereux*
, surtout quand on travail à plusieurs.
-
Le plus simple est de revenir à une version antérieure et faire un nouveau
commit.
*
Il existe des techniques
*violentes*
qu'on verra pas ici.
-
Il existe des techniques
*violentes*
qu'on verra pas ici.
# Retirer un fichier du contrôle de version (1/3)
...
...
@@ -447,28 +446,28 @@ Git voit les fichiers dans trois états possibles:
## Certains fichiers ne doivent pas être *addables*
*
Ils doivent
*explicitement*
être ignorés.
-
Ils doivent
*explicitement*
être ignorés.
# Quels fichiers ignorer
On ignore typiquement:
*
Les fichiers binaires: exécutables, images, ...
*
Les produits de compilation:
`*.o`
,
`*.pyc`
, ...
*
Les produits d'exécutions: logs, ...
*
Les fichiers de configuration d'un IDE: .vscode, ...
*
Les fichiers système.
-
Les fichiers binaires: exécutables, images, ...
-
Les produits de compilation:
`*.o`
,
`*.pyc`
, ...
-
Les produits d'exécutions: logs, ...
-
Les fichiers de configuration d'un IDE: .vscode, ...
-
Les fichiers système.
# Comment ignorer des fichiers?
*
Créer un fichier texte nommé
`.gitignore`
.
*
L'ajouter au répo git et le "commit".
*
Y ajouter les règles à suivre pour ignorer les fichiers.
-
Créer un fichier texte nommé
`.gitignore`
.
-
L'ajouter au répo git et le "commit".
-
Y ajouter les règles à suivre pour ignorer les fichiers.
Exemple: [^2]
```
bash
biden
# ignore le fichier
biden
```
console
harris
#
ignore le fichier
harris
*.o #
ignore tous les fichier
`
.o
`
!trump.o #
mais PAS trump.o
sanders #
ignore le répertoire sanders
...
...
@@ -477,6 +476,18 @@ sanders # ignore le répertoire sanders
[
^2
]:
Pour
une liste plus exhaustive voir le site
<https://bit.ly/2HTZJyQ>
par exemple.
# Un exemple de fichier `.gitignore`
```
console
#
Ignore everything
*
#
Except .gitignore, Makefile,
*
.c,
*
.h
!.gitignore
!*.c
!*.h
!Makefile
```
# Des références
Il existe énormément de très bons documents et tutoriels en ligne:
...
...
@@ -498,4 +509,3 @@ Et des GUI assez utiles:
# Des questions?

{width=70%}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment