Toutes les pages
Sur cette page

Modifications Git

Git changes (Modifications Git) montre ce qui diffère dans le dépôt git du dossier de travail de la conversation : la branche, chaque fichier modifié et un diff pour chacun. Servez-vous-en pour relire le travail d’un agent avant de lui demander de commiter. C’est une visionneuse. Seul le bouton ⬇ Pull modifie quelque chose.

L’ouvrir #

Ouvrez le menu ⋯ de la conversation et choisissez 🌿 Git changes. Une fenêtre s’ouvre par-dessus la conversation. Elle lit le dossier sur l’hôte du relais, donc vous voyez la même chose depuis n’importe quel navigateur.

L’entrée figure dans le menu de toute conversation ouverte. Elle est masquée quand aucune conversation n’est ouverte et dans la vue partagée en lecture seule.

Quel dépôt #

La fenêtre exécute git dans le dossier de travail de la conversation, celui que vous avez choisi dans la boîte de dialogue New chat (Nouveau chat) ou défini avec 🗂️ Change CWD (Changer le dossier de travail). Git trouve le dépôt à partir de là, comme dans un terminal : un dossier situé dans un dépôt affiche ce dépôt.

Si git ne trouve aucun dépôt, l’en-tête indique Not a git repository et la liste The current workspace root is not a git repository. Le bouton ⬇ Pull est désactivé. Un dossier qui contient seulement plusieurs dépôts côte à côte n’est pas lui-même un dépôt : il reçoit donc ce message aussi. Démarrez une conversation dans le dépôt que vous voulez relire.

Dossier de travail sous la racine du dépôt

Quand le dossier de travail est un sous-dossier d’un dépôt, la liste montre quand même les modifications de tout le dépôt, et pas seulement celles de ce sous-dossier. Ouvrir un fichier depuis la liste ne fonctionne pas : chaque diff indique No textual changes detected for this file. Démarrez la conversation dans le dossier racine du dépôt pour obtenir des diffs qui fonctionnent.

Un dépôt qui n’a encore aucun commit affiche le nom de sa branche, et ses fichiers indexés sont listés. Le diff d’un fichier indexé y échoue avec le message de git fatal: bad revision 'HEAD'. Les diffs des fichiers non suivis fonctionnent.

L’en-tête affiche la branche et, à côté, son écart avec sa branche amont :

En-tête Signification
main La branche, à égalité avec sa branche amont ou sans branche amont.
main ↑2 Deux commits d’avance sur l’amont : pas encore poussés.
main ↓3 Trois commits de retard sur l’amont.
main ↑2 ↓3 Les deux.
detached HEAD Un commit est extrait, et non une branche.

Sous la branche, une seconde ligne indique la branche amont et le nombre de fichiers modifiés, comme origin/main · 4 changed files (1 changed file pour un seul). Une branche sans amont n’affiche ni flèches ni nom d’amont, seulement le nombre. Les nombres sont ceux que git connaissait en dernier : OAR ne fait pas de fetch, donc ↓ ne change qu’après un fetch ou un pull.

Pull #

⬇ Pull exécute un simple git pull dans le dossier, sans option. Son info-bulle indique « Pull from upstream », mais OAR ne nomme ni remote ni branche. Que le pull fusionne, rebase ou ne fasse qu’une avance rapide dépend de votre configuration git (pull.rebase, pull.ff). Le bouton est toujours proposé quand le dossier est un dépôt, même quand il n’y a rien à récupérer, et il est désactivé pendant le chargement de la fenêtre ou pendant un pull (il indique alors Pulling…). Un pull peut durer jusqu’à 120 secondes.

À la fin, une ligne sous l’en-tête indique Pull: suivi de la dernière ligne de la sortie de git (par exemple Pull: Already up to date.), ou Pull complete. quand git n’a rien affiché. Si git refuse, la ligne est rouge et indique Pull failed: suivi du message de git lui-même. C’est ce que vous voyez en cas de conflit, de modifications locales qu’un pull écraserait, ou de branche sans amont. OAR ne fait ni stash, ni reset, ni résolution. Demandez à l’agent de régler cela. La liste est rechargée après chaque pull.

La liste #

Chaque fichier modifié occupe une ligne : les fichiers indexés, non indexés et non suivis ensemble, triés par chemin. Une ligne affiche :

  • un badge à une lettre pour l’état, et le nom du fichier avec son dossier en dessous ;
  • pour un fichier renommé, l’ancien chemin après un ← ;
  • les fichiers supprimés avec le nom barré.

Un nouveau dossier que git ne suit pas encore forme une seule ligne pour tout le dossier, et non une par fichier qu’il contient. Son nom est vide et le chemin du dossier s’affiche en dessous. L’ouvrir affiche No textual changes detected for this file.

Badge Signification
M Modifié
A Ajouté
D Supprimé
R Renommé
C Copié
T Type modifié
U Non suivi : un nouveau fichier que git ne suit pas encore

Un fichier modifié après avoir été indexé n’apparaît qu’une fois, avec l’état de la copie de travail. La liste ne distingue pas les modifications indexées des non indexées. Survolez une ligne pour voir l’état en toutes lettres et le chemin complet.

Fichiers en conflit

Un fichier en conflit de fusion n’a pas de badge propre. Un fichier modifié des deux côtés (UU dans git) affiche U et le mot Untracked (Non suivi), bien qu’il soit suivi. Un fichier ajouté des deux côtés affiche A, un fichier supprimé des deux côtés affiche D, et un fichier supprimé d’un seul côté affiche D (barré) ou U, selon le côté. Son diff s’ouvre quand même et le compare au dernier commit. Utilisez git status dans un terminal, ou demandez à l’agent, pour voir le conflit.

Un dépôt qui n’a rien à afficher indique Working tree clean — no changes.

Actualiser #

La liste n’est pas en direct. Elle est lue quand vous ouvrez la fenêtre, quand vous appuyez sur ↻ (actualiser) et après un pull. Pendant qu’un agent travaille, appuyez sur ↻ pour voir ses dernières modifications. Fermer et rouvrir la fenêtre a le même effet.

La visionneuse de diff #

Cliquez sur une ligne pour ouvrir le diff de ce fichier dans une seconde fenêtre, par-dessus la liste. Le diff compare le fichier au dernier commit, si bien que les modifications indexées et non indexées s’affichent ensemble. Le titre est le chemin du fichier ; en dessous figurent l’état et les compteurs, par exemple Modified · +12 −3.

Bouton Affiche
Changes (Modifications) Les lignes ajoutées et supprimées, avec trois lignes inchangées autour de chacune. Les plages inchangées plus longues se replient en ⋯ 40 unchanged lines. C’est la vue par défaut.
Full file (Fichier complet) Toutes les lignes du fichier, avec les modifications signalées.

Les deux vues viennent d’un même diff, donc le passage de l’une à l’autre est instantané. Le choix est conservé pour les fichiers que vous ouvrez ensuite, jusqu’à ce que vous rechargiez la page. Les lignes portent les anciens et les nouveaux numéros de ligne ; les lignes ajoutées sont vertes et les lignes supprimées rouges.

Fichier Ce que vous voyez
Nouveau (non suivi) Toutes les lignes comme ajoutées.
Supprimé Toutes les lignes comme supprimées.
Renommé Le nouveau chemin comparé au dernier commit : toutes les lignes comme ajoutées, même quand le contenu n’a pas changé.
Binaire Binary file — no text diff available., avec l’état seul et sans compteurs.
Aucune modification de texte, comme un changement de mode No textual changes detected for this file.
Très volumineux Le même diff, en entier. OAR ne fixe aucune limite de taille, mais la lecture du diff dispose de 15 secondes et d’une limite de sortie de 32 Mo. Un fichier qui les dépasse affiche un message d’erreur à la place du diff.

Les longues lignes ne sont pas renvoyées à la ligne. Faites défiler horizontalement pour les lire.

Si git ne peut pas lire l’état ou un diff, le message s’affiche en rouge au-dessus de la liste, ou à la place du diff.

Fermez le diff avec ×, Esc ou un clic à l’extérieur. La liste reste ouverte derrière. ×, Esc ou un clic à l’extérieur ferme ensuite la liste à son tour.

Ce qu’elle ne fait pas #

Il n’y a ici ni indexation, ni commit, ni abandon de modifications, ni push, et aucun moyen de modifier un fichier. Pour commiter, annuler une modification ou pousser, demandez-le à l’agent, dans la conversation. Un commit que l’agent fait sur Claude porte la ligne d’attribution que vous avez choisie ; voir Attribution des commits. Ajouté en 0.9.17 Sur DeepSeek, il porte la ligne choisie sous Commit attribution (Attribution des commits) dans l’onglet DeepSeek, ou le réglage propre au dossier.

Par fournisseur #

La fenêtre est la même pour tous les fournisseurs qui tournent sur l’hôte du relais : GitHub Copilot, OpenAI, Claude, Cursor, Grok et DeepSeek. Elle lit le dossier et git, pas l’agent.

Fournisseur Modifications Git
Claude Cloud Le chat travaille sur un clone chez Anthropic, que cette fenêtre ne peut pas voir. L’entrée figure dans le menu et lit le dossier de travail que vous avez choisi dans New Chat sur l’hôte du relais (celui qui a fourni le dépôt et la branche), et non les modifications du bac à sable. Les résultats de l’agent reviennent sous forme de branches qu’il a poussées : la ligne cloud au-dessus de la zone de saisie a un lien ⇡ branch (⇡ branche) par branche poussée. Voir Claude Cloud.