Try   HackMD

Introduction à Git

Présentation

git est un outil de versionnage de code qui permet de :

  • Conserver son code en ligne
  • Tracer l'historique des différents modules
  • Partager le code entre plusieurs membres d'une équipe

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

git correspond au nom de la suite de commandes et du langage de version. Plusieurs sites fournissent des services pour héberger le code et permettre d'y accéder plus facilement (github.com, gitlab.com, ) et plusieurs outils de développement font le lien direct avec ces sites là (c'est notamment le cas de tous les outils de JetBrains dont PyCharm fait partie).

Fonctionnement

git fonctionne sur une base de versions du code appelés commit. Chaque commit présente l'état du projet et des fichiers sources à un instant donné. La version locale de ces fichiers peut ensuite être mise en ligne et hébergée.

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Commandes principales

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

  • git add: Ajout des fichiers donnés à la liste des fichiers qui seront versionnés au prochain commit.
  • git commit: Création d'une nouvelle version du projet à partir des fichiers ajoutés.
  • git push: Propagation des changements locaux vers la version hébergée en ligne.
  • git pull: Mise à jour des fichiers locaux à partir de ceux en ligne.

Recommandations

Les recommandations principales lors de l'utilisation d'un projet git sont les suivantes.

  • TOUJOURS mettre à jour son projet avec la version en ligne avant d'écrire du code !
  • PLUSIEURS commits réguliers vous permettront de mieux tracer vos changements plutôt qu'un seul !
  • Essayez de travailler sur des morceaux de code différents pour ne pas modifier en même temps la même partie.

Installation

Création d'un projet avec PyCharm

  • Créez un nouveau projet avec File > New Project, une fenêtre d'ouvre et vous demande le chemin souhaité pour votre projet.
  • Créez un dossier git avec VCS (Version Control Service) > Create Git Repository..., une fenêtre s'ouvre pour spécifier le chemin du projet. Sélectionnez le chemin du nouveau projet.
  • L'onglet VCS s'appelle maintenant Git

Votre projet Python est prêt à accueillir Git !


Création d'un projet sur Gitlab/Github

Gitlab ENSTA

  • Connectez-vous à votre compte Gitlab ENSTA (mêmes identifiants que Moodle).
  • Créez un projet en utilisant New Project. Renseignez le même nom que votre projet PyCharm.

Github

  • Créez un compte Github.
  • Cliquez sur New Repository. Renseignez le même nom que votre projet PyCharm.

Votre projet Git est prêt à être utilisé !


Lien entre projet PyCharm et projet Git

  • Sur PyCharm, sélectionnez Git > Manage Remotes....
  • Cliquez sur le +. Dans la case URL, renseignez le lien de votre projet, par exemple : https://gitlab.ensta-bretagne.fr/ducassqu/python-project
  • Renseignez vos identifiants (Github ou Gitlab en fonction de la méthode choisie).

Votre projet Python est relié entre Git et PyCharm !


Commit, Push et Pull

  • Dans PyCharm, pour créer une nouvelle version des fichiers source, cliquez sur Git > Commit....
  • Sélectionnez les fichiers à rajouter, renseignez un message pour la version et cliquez sur Commit.

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Votre code a été mis à jour LOCALEMENT !

  • Pour mettre à jour votre code en ligne, il faut push. La commande est disponible via Git > Push.

Votre code est mis à jour EN LIGNE à partir de votre version locale !

  • Pour mettre à jour localement votre code à partir de votre projet en ligne il faut pull. La commande basique est disponible via Git > Update Project....

Votre code local a été mis à jour à partir de la version en ligne !


Configuration du projet pour la collaboration

Pour collaborer effectivement, il faut donner accès à votre projet à votre binôme. La méthode pour donner accès est la suivante :

  • Gitlab

    • Passer le projet en Public : Settings > General > Visibility et la passer de Private à Public.
    • Ajouter votre binôme en Members en temps que Maintainer
      Image Not Showing Possible Reasons
      • The image file may be corrupted
      • The server hosting the image is unavailable
      • The image path is incorrect
      • The image format is not supported
      Learn More →
  • Github

    • Ajouter votre binôme dans Settings > Manage Access
      Image Not Showing Possible Reasons
      • The image file may be corrupted
      • The server hosting the image is unavailable
      • The image path is incorrect
      • The image format is not supported
      Learn More →

Vous pouvez maintenant tou.te.s les deux avoir accès à toutes les fonctionnalités du projet !


Structure du projet Python

La structure de votre projet Python pourra reprendre la suivante :

  • python-project

Avec :

  • le fichier README.md qui décrit votre projet (.md correspondant à Markdown).
  • le fichier .gitignore qui contient le nom de TOUS les fichiers qui doivent être IGNORÉS par git. Vous pouvez copier-coller le .gitignore suivant :
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/
cover/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3
db.sqlite3-journal

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
.pybuilder/
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# PEP 582; used by e.g. github.com/David-OConnor/pyflow
__pypackages__/

# Celery stuff
celerybeat-schedule
celerybeat.pid

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

# Pyre type checker
.pyre/

# pytype static type analyzer
.pytype/

# Cython debug symbols
cython_debug/

# OS generated files 
.DS_Store
.DS_Store?
._*
.*.sw[op]
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

tags: git