For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navigation principale
Theme

Arbres de travail

Utilisez les arbres de travail Git dans Codex pour mener plusieurs discussions en parallèle

Grâce aux arbres de travail, Codex peut mener plusieurs discussions indépendantes dans un même projet sans que le travail de l’une interfère avec celui des autres. Le dépôt et l’arbre de travail restent sur l’ordinateur ou dans l’environnement de développement distant qui héberge le projet. C’est aussi là que les commandes s’exécutent. Vous pouvez travailler directement dans l’application de bureau ChatGPT ou utiliser Codex dans l’application mobile ChatGPT pour démarrer des discussions dans les arbres de travail d’un ordinateur connecté, guider Codex, approuver ses actions et examiner son travail.

Dans un dépôt Git, les tâches planifiées peuvent s’exécuter en arrière-plan dans des arbres de travail dédiés sans perturber votre travail en cours. Dans les projets sans gestion de versions, les tâches planifiées s’exécutent directement dans le répertoire du projet. Vous pouvez aussi démarrer manuellement une discussion dans un arbre de travail et la transférer entre Local et Worktree.

Les arbres de travail ne s’exécutent pas sur votre téléphone. L’application mobile ChatGPT pilote Codex sur l’ordinateur connecté ou dans l’environnement de développement distant utilisé par cet ordinateur. Le dépôt et l’arbre de travail restent dans l’environnement où Codex s’exécute. Les instructions ci-dessous qui concernent l’application de bureau s’appliquent à l’ordinateur connecté.

Qu’est-ce qu’un arbre de travail ?

Les arbres de travail sont disponibles uniquement pour les projets qui font partie d’un dépôt Git, car Codex s’appuie sur les arbres de travail Git. Un arbre de travail vous permet de créer une deuxième copie de travail de votre dépôt (« checkout »). Chaque arbre de travail possède sa propre copie de chaque fichier du dépôt, mais tous partagent les mêmes métadonnées sur les commits, les branches, etc. (dossier .git). Vous pouvez ainsi extraire plusieurs branches et y travailler en parallèle.

Terminologie

  • Copie de travail locale : le dépôt que vous avez créé. L’application de bureau ChatGPT l’appelle parfois simplement Local.
  • Arbre de travail : un arbre de travail Git créé à partir de votre copie de travail locale dans l’application de bureau ChatGPT.
  • Transfert : opération qui déplace une discussion entre Local et Worktree. Codex se charge des opérations Git nécessaires pour transférer votre travail en toute sécurité.

Pourquoi utiliser un arbre de travail ?

  1. Travaillez en parallèle avec Codex sans perturber votre configuration actuelle dans Local.
  2. Mettez des tâches en file d’attente pour que Codex les exécute en arrière-plan pendant que vous vous concentrez sur votre travail au premier plan.
  3. Transférez ensuite une discussion vers Local lorsque vous souhaitez examiner les modifications, les tester ou collaborer plus directement.

Premiers pas

Les arbres de travail nécessitent un dépôt Git. Vérifiez que le projet sélectionné fait partie d’un dépôt Git.

  1. Sélectionnez « Worktree »

    Dans la vue de création d’une discussion, sélectionnez Worktree sous la zone de saisie. Si vous souhaitez exécuter des scripts de configuration pour l’arbre de travail, choisissez un environnement local.

  2. Sélectionnez la branche de départ

    Sous la zone de saisie, choisissez la branche Git à partir de laquelle créer l’arbre de travail. Il peut s’agir de votre branche main ou master, d’une branche de fonctionnalité ou de votre branche actuelle avec ses modifications locales non indexées.

  3. Envoyez votre prompt

    Envoyez votre prompt. Codex crée alors un arbre de travail Git à partir de la branche sélectionnée. Par défaut, Codex travaille avec une HEAD détachée.

  4. Choisissez où poursuivre votre travail

    Vous pouvez continuer à travailler directement dans l’arbre de travail ou, le moment venu, transférer la discussion vers votre copie de travail locale. Un transfert depuis ou vers Local déplace votre discussion et votre code pour que vous puissiez continuer dans l’autre copie de travail.

Passer de Local à Worktree et inversement

Un arbre de travail se présente et s’utilise comme votre copie de travail locale. C’est son rôle dans votre façon de travailler qui diffère. Vous pouvez utiliser Local pour travailler au premier plan et Worktree pour travailler en arrière-plan. Le transfert vous permet de déplacer une discussion de l’un à l’autre.

Lors d’un transfert, Codex effectue les opérations Git nécessaires pour déplacer votre travail en toute sécurité entre les deux copies. C’est important, car Git ne permet d’extraire une branche qu’à un seul endroit à la fois. Si vous extrayez une branche dans un arbre de travail, vous ne pouvez pas l’extraire en même temps dans votre copie de travail locale, et inversement.

En pratique, deux possibilités s’offrent à vous :

  1. Travaillez exclusivement dans l’arbre de travail. Cette option convient lorsque vous pouvez vérifier les modifications directement dans l’arbre de travail, par exemple si vous y avez installé les dépendances et les outils à l’aide d’un script de configuration de l’environnement local.
  2. Transférez la discussion vers Local. Choisissez cette option pour ramener la discussion au premier plan, par exemple si vous souhaitez examiner les modifications dans votre IDE habituel ou si vous ne pouvez exécuter qu’une seule instance de votre application.

Option 1 : travailler dans l’arbre de travail

Si vous souhaitez continuer à travailler sur vos modifications exclusivement dans l’arbre de travail, créez-y une branche à l’aide du bouton Créer une branche ici dans l’en-tête de la discussion.

Vous pouvez ensuite créer un commit avec vos modifications, pousser votre branche vers le dépôt distant et ouvrir une pull request sur GitHub.

Le bouton « Ouvrir » dans l’en-tête vous permet d’ouvrir le répertoire de l’arbre de travail dans votre IDE. Vous pouvez aussi utiliser le terminal intégré ou effectuer toute autre opération depuis ce répertoire.

Si vous créez une branche dans un arbre de travail, vous ne pouvez pas l’extraire simultanément dans un autre arbre de travail, y compris dans votre copie de travail locale.

Option 2 : transférer une discussion vers Local

Pour ramener une discussion au premier plan, sélectionnez Transférer dans son en-tête, puis choisissez Local comme destination.

Cette option convient si vous souhaitez examiner les modifications dans la fenêtre de votre IDE habituel, lancer votre serveur de développement existant ou vérifier le résultat dans votre environnement de travail quotidien.

Codex se charge des opérations Git nécessaires pour transférer la discussion en toute sécurité entre l’arbre de travail et votre copie de travail locale.

Chaque discussion reste associée au même arbre de travail. Si vous la transférez de nouveau vers un arbre de travail, Codex la replace dans son environnement d’arrière-plan initial. Vous pouvez ainsi reprendre là où vous en étiez.

Le transfert fonctionne aussi dans l’autre sens. Si vous travaillez déjà dans Local et souhaitez libérer le premier plan, sélectionnez Transférer pour déplacer la discussion vers un arbre de travail. Codex peut ainsi poursuivre son travail en arrière-plan pendant que vous vous consacrez à autre chose sur votre ordinateur.

Le transfert repose sur des opérations Git. Les fichiers ignorés selon les règles de votre fichier .gitignore ne suivent donc pas la discussion, sauf si Codex les copie dans un arbre de travail local qu’il gère à l’aide de .worktreeinclude.

Fonctionnement avancé

Arbres de travail gérés par Codex

Par défaut, les discussions utilisent un arbre de travail géré par Codex. Ces arbres sont conçus pour être faciles à créer et à supprimer. En général, Codex réserve un arbre de travail à une seule discussion. Si vous retransférez la discussion vers un arbre de travail, Codex la replace dans celui qui lui est associé.

Comment Codex gère vos arbres de travail

Codex crée les arbres de travail dans $CODEX_HOME/worktrees. Le commit de départ est le commit HEAD de la branche sélectionnée au démarrage de la discussion. Si vous avez choisi une branche qui contient des modifications locales, Codex applique aussi à l’arbre de travail les modifications qui n’ont pas encore fait l’objet d’un commit. Aucune branche n’est extraite dans cet arbre de travail : sa HEAD est détachée. Codex peut ainsi créer plusieurs arbres de travail sans multiplier les branches de votre dépôt.

Copie de fichiers locaux ignorés dans les arbres de travail gérés

Codex crée les arbres de travail locaux qu’il gère à partir d’une copie de travail Git. Les fichiers suivis y sont donc déjà présents. Si votre dépôt ignore des fichiers de configuration locaux dont un nouvel arbre de travail a besoin, ajoutez un fichier .worktreeinclude à la racine du dépôt. Indiquez-y les chemins ignorés à copier lors de la création d’un arbre de travail géré, ou utilisez des motifs au format .gitignore.

Utilisez ce mécanisme pour les fichiers que Git ignore volontairement, comme .env, .env.local ou config/secrets.json. Codex copie uniquement les fichiers ignorés qui correspondent aux règles de .worktreeinclude. Les autres fichiers locaux non suivis par Git ne sont pas copiés. N’ajoutez pas de fichiers suivis à cette liste.

Si Git ignore le fichier AGENTS.override.md, Codex le copie automatiquement dans les arbres de travail locaux qu’il gère. Vous n’avez donc pas besoin de l’ajouter à .worktreeinclude.

# .worktreeinclude
.env
.env.local
config/secrets.json

Codex ignore les liens symboliques à la source et n’écrase pas les fichiers déjà présents dans la nouvelle copie de travail. Ce comportement s’applique uniquement aux arbres de travail locaux gérés par l’application de bureau ChatGPT. Les arbres de travail distants et ceux que vous créez vous-même avec Git en ligne de commande ne sont pas concernés.

Restrictions liées aux branches

Supposons que Codex ait terminé son travail dans un arbre de travail et que vous y créiez une branche feature/a à l’aide du bouton Créer une branche ici. Vous souhaitez maintenant la tester dans votre copie de travail locale. Si vous essayez d’y extraire cette branche, Git renvoie l’erreur suivante :

fatal: 'feature/a' is already used by worktree at '<WORKTREE_PATH>'

Pour résoudre le problème, extrayez une autre branche à la place de feature/a dans l’arbre de travail.

Si vous comptez extraire la branche localement, transférez la discussion vers Local au lieu d’essayer de garder la même branche extraite aux deux endroits à la fois.

Pourquoi cette restriction existe-t-elle ?

Git empêche d’extraire la même branche dans plusieurs arbres de travail à la fois, car une branche est une référence unique et modifiable (refs/heads/<name>) qui représente « l’état actuellement extrait » d’un arbre de travail.

Lorsqu’une branche est extraite, Git considère que sa HEAD appartient à l’arbre de travail concerné. Il s’attend à ce que les opérations comme git commit, git reset, git rebase et git merge mettent à jour cette référence l’une après l’autre, dans un ordre bien défini. Si plusieurs arbres de travail pouvaient extraire la même branche en même temps, leurs opérations risqueraient de mettre à jour la référence de branche de façon concurrente, sans qu’on sache laquelle ferait foi. Certains commits pourraient être perdus, les index pourraient devenir incohérents et la résolution des conflits serait incertaine.

En limitant l’extraction d’une branche à un seul arbre de travail à la fois, Git garantit que chaque branche dispose d’une seule copie de travail qui fait foi. Les autres arbres de travail peuvent toujours référencer les mêmes commits en toute sécurité, avec une HEAD détachée ou sur des branches distinctes.

Nettoyage des arbres de travail

Les arbres de travail peuvent occuper beaucoup d’espace disque. Chacun possède ses propres fichiers du dépôt, dépendances, caches de compilation, etc. L’application de bureau ChatGPT cherche donc à en limiter le nombre.

Par défaut, Codex conserve les 15 arbres de travail les plus récents parmi ceux qu’il gère. Si vous préférez gérer vous-même l’espace disque, vous pouvez modifier cette limite ou désactiver la suppression automatique dans les paramètres.

Codex évite autant que possible de supprimer les arbres de travail encore utiles. Un arbre de travail géré par Codex est protégé de la suppression automatique dans les cas suivants :

  • Une discussion épinglée lui est associée.
  • La discussion est toujours en cours.

Les arbres de travail permanents créés dans les versions précédentes restent disponibles et protégés du nettoyage automatique. Vous ne pouvez plus créer d’arbres de travail permanents depuis le menu du projet.

Codex supprime automatiquement les arbres de travail qu’il gère dans les cas suivants :

  • Vous archivez la discussion associée.
  • Codex doit supprimer des arbres de travail plus anciens pour respecter la limite que vous avez définie.

Avant de supprimer un arbre de travail qu’il gère, Codex enregistre un instantané du travail qu’il contient. Si vous ouvrez la discussion après la suppression de son arbre de travail, Codex vous propose de restaurer celui-ci.

Questions fréquentes

Puis-je choisir où sont créés les arbres de travail ?

Oui. Par défaut, Codex crée les arbres de travail qu’il gère dans $CODEX_HOME/worktrees. Pour choisir un autre emplacement, ouvrez Paramètres > Arbres de travail et modifiez Racine des arbres de travail.

Puis-je transférer une discussion entre Local et Worktree ?

Oui. Sélectionnez Transférer dans l’en-tête de la discussion pour la déplacer entre votre copie de travail locale et un arbre de travail. Codex effectue les opérations Git nécessaires au transfert de la discussion en toute sécurité d’un environnement à l’autre. Si vous transférez de nouveau la discussion vers un arbre de travail, Codex la replace dans celui qui lui est associé.

Que deviennent les discussions si un arbre de travail est supprimé ?

Les discussions peuvent rester dans votre historique même si le répertoire de l’arbre de travail associé a été supprimé. Pour les arbres de travail qu’il gère, Codex enregistre un instantané avant la suppression et vous propose de restaurer l’arbre de travail si vous rouvrez la discussion associée.