blog_tech/blog/2025-12-10-obsidian-git-workflow.md

9.3 KiB

slug title authors tags date image
obsidian-git-workflow Écrire ses articles de blog avec Obsidian et Git
tellserv
obsidian
git
workflow
documentation
2025-12-10 /img/blog/2025-12-10-obsidian-git/2023_Obsidian_logo.svg

Comment j'ai configuré Obsidian avec le plugin Git pour rédiger et synchroniser mes articles de blog et ma documentation technique, avec des templates personnalisés et un workflow Git propre.

Obsidian Logo

Contexte et motivation

Mon blog technique fonctionne avec Docusaurus, un générateur de site statique qui utilise du Markdown pour le contenu. Bien que je puisse éditer les fichiers directement avec VS Code ou n'importe quel éditeur de texte, j'avais besoin d'un environnement d'édition plus adapté à la rédaction d'articles longs avec :

  • Une interface dédiée à l'écriture : Obsidian offre un mode focus et une prévisualisation Markdown en temps réel
  • Des templates réutilisables : Pour garantir la cohérence du frontmatter Docusaurus (métadonnées en YAML)
  • Une synchronisation Git automatique : Pulls automatiques toutes les 10 minutes pour récupérer les changements distants
  • Une séparation claire : Uniquement le contenu éditorial (blog, docs, images) sans les fichiers techniques de Docusaurus

Architecture du setup

Le principe est simple : utiliser Git sparse checkout pour ne récupérer que les dossiers de contenu du dépôt, et configurer Obsidian avec le plugin Git pour synchroniser les modifications sur une branche dédiée.

Vault Obsidian (local)
├── blog/           ← Articles de blog (FR)
├── docs/           ← Documentation (FR)
├── i18n/           ← Traductions (EN)
├── static/         ← Images et assets
└── templates/      ← Templates locaux (non versionnés)

↓ Synchronisation Git (branche "contenu")

Forgejo → GitHub → Cloudflare Pages

Workflow de publication :

  1. J'écris dans Obsidian et commite manuellement sur la branche contenu
  2. Pull automatique toutes les 10 minutes pour récupérer les changements distants
  3. Push manuel quand je veux synchroniser avec le serveur
  4. Quand l'article est prêt : Pull Request sur Forgejo de contenu vers main
  5. Après merge : déploiement automatique sur Cloudflare Pages

Étape 1 : Mise en place du vault Obsidian avec sparse checkout

Clone initial avec sparse checkout

Le sparse checkout permet de ne récupérer que les dossiers nécessaires sans télécharger tout le projet Docusaurus (node_modules, build, etc.).

New-Item -ItemType Directory .\Obsidian
Set-Location .\Obsidian

git clone --no-checkout https://forgejo.tellserv.fr/Tellsanguis/blog_tech.git .

git sparse-checkout disable
git sparse-checkout init --cone
git sparse-checkout set blog docs i18n static
git read-tree -mu HEAD

git ls-files | Where-Object { $_ -notmatch '/' } | ForEach-Object { git update-index --assume-unchanged -- $_ }
git ls-files | Where-Object { $_ -notmatch '/' } | ForEach-Object { if (Test-Path $_) { Remove-Item -Force $_ -ErrorAction SilentlyContinue } }
git read-tree -mu HEAD

git checkout -b contenu
git push -u origin contenu

Explication des commandes :

  • git clone --no-checkout : Clone le dépôt sans extraire les fichiers
  • git sparse-checkout set blog docs i18n static : Définit les dossiers à récupérer
  • Les commandes git ls-files : Marquent les fichiers racine comme "assume-unchanged" et les suppriment du working tree
  • git checkout -b contenu : Crée et bascule sur la branche de travail

Résultat attendu : Seuls les dossiers blog/, docs/, i18n/, static/ et .git/ sont présents.

Configuration du .gitignore

Pour éviter de versionner les fichiers spécifiques à Obsidian :

# Obsidian
.obsidian/
.trash/
templates/

# Fichiers système
.DS_Store
Thumbs.db

Les templates sont locaux et personnels, inutile de les versionner dans le dépôt principal.

Étape 2 : Installation et configuration d'Obsidian

Ouvrir le vault

  1. Lancer Obsidian
  2. Open folder as vault → Sélectionner C:\Users\Tellsanguis\Documents\Obsidian

Installation du plugin Obsidian Git

Le plugin Obsidian Git permet de gérer Git directement depuis Obsidian sans passer par la ligne de commande.

  1. Settings (roue dentée en bas à gauche) → Community plugins
  2. Turn on community plugins
  3. Browse → Rechercher "Obsidian Git" (par Vinzent03)
  4. InstallEnable

Installation du plugin Obsidian Git

Configuration du plugin Obsidian Git

Settings → Obsidian Git :

Section "Automatic"

Configuration auto pull

  • Auto pull interval (minutes) : 10 → Récupère les changements distants toutes les 10 minutes

Cette configuration permet de rester synchronisé avec les changements faits depuis d'autres machines ou par d'autres contributeurs.

Section "Pull"

Pull on startup et autres paramètres

  • Pull on startup : Activé → Pull automatique au démarrage d'Obsidian
  • Merge strategy : Merge → Stratégie de fusion par défaut

Section "Commit author"

Configuration de l'auteur des commits

Cela permet d'identifier correctement l'auteur des commits dans l'historique Git.

Section "Commit message"

  • Commit message : "vault backup: {{date}}"

Cette syntaxe permet d'avoir des messages de commit automatiques avec la date, par exemple : vault backup: 2025-12-10 14:30

Étape 3 : Création des templates

Les templates facilitent la création d'articles et de documentation avec le bon format frontmatter attendu par Docusaurus.

Configuration du plugin Templates

  1. Settings → Core plugins → Templates : Activer
  2. Settings → Templates :
    • Template folder location : templates
    • Date format : YYYY-MM-DD

Affichage des propriétés frontmatter

Propriétés dans les documents source

Pour voir les propriétés YAML (frontmatter) directement dans l'éditeur, sélectionner "source" dans les paramètres d'affichage des propriétés.

Workflow d'utilisation au quotidien

Créer un nouvel article de blog

  1. Clic droit dans le dossier blog/New note
  2. Nommer : YYYY-MM-DD-titre-slug.md (ex: 2025-12-10-mon-article.md)
  3. Insérer le template :
    • Ctrl+P (Command Palette)
    • Taper "template"
    • Sélectionner "Templates: Insert template"
    • Choisir blog-cheatsheet
  4. Modifier le frontmatter :
    • slug : titre-slug (sans la date)
    • title : Titre complet de l'article
    • tags : Remplacer par les vrais tags
    • date : Automatiquement rempli par Obsidian
    • image : Chemin vers la bannière (si utilisée)
  5. Écrire le contenu avec prévisualisation en temps réel
  6. Ajouter les images dans static/img/blog/YYYY-MM-DD-slug/

Synchronisation avec Git

Le plugin Obsidian Git affiche un panel à droite de la fenêtre pour gérer la synchronisation :

Panel Git dans Obsidian

Pull automatique :

  • Pull automatique toutes les 10 minutes pour récupérer les changements distants
  • Pull automatique au démarrage d'Obsidian

Commit et push manuels :

  1. Vérifier les changements : Le panel Git affiche les fichiers modifiés dans la section "Changes"
  2. Commit : Cliquer sur le bouton de commit en bas du panel ou utiliser Ctrl+P → "Git: Commit all changes"
  3. Push : Cliquer sur le bouton de push en bas du panel ou utiliser Ctrl+P → "Git: Push"

Publier sur le blog

  1. Sur Forgejo : https://forgejo.tellserv.fr/Tellsanguis/blog_tech
  2. Pull RequestsNew Pull Request
  3. Base branch : main / Compare branch : contenu
  4. Create Pull Request → Revue du contenu → Merge
  5. Pipeline automatique : Forgejo → GitHub mirror → Cloudflare Pages → Publication en ligne

Ce workflow permet de relire et valider le contenu avant publication, avec un historique Git complet de toutes les modifications.

Conclusion

Ce setup me permet de bénéficier d'un environnement d'édition optimisé pour la rédaction tout en gardant un workflow Git avec review et historique complet.

Le panel Git intégré directement dans Obsidian facilite grandement la gestion des commits et des pushs, avec une visualisation claire des fichiers modifiés. Les pulls automatiques garantissent que je reste toujours synchronisé avec le dépôt distant, tout en gardant le contrôle total sur ce que je commite et quand je le fais (dans les faits, je suis seul à travailler sur ce blog : c'est surtout utile pour le travail en équipe afin d'avoir les mises à jour en temps réel).

Si vous utilisez Docusaurus ou un autre générateur de site statique basé sur Markdown, je recommande vivement ce type de setup pour faciliter la rédaction de contenu technique !