diff --git a/services/web/app/src/Features/GitSync/GitSyncHandler.mjs b/services/web/app/src/Features/GitSync/GitSyncHandler.mjs
index 6a5fa2dc7f..24c787b736 100644
--- a/services/web/app/src/Features/GitSync/GitSyncHandler.mjs
+++ b/services/web/app/src/Features/GitSync/GitSyncHandler.mjs
@@ -145,8 +145,12 @@ async function pushToRemote(
await writeFile(dest, doc.lines.join('\n'))
}
+ // Only push text-typed uploaded files (e.g. .bib, .cls, .sty).
+ // Binary files (images, PDFs, etc.) are skipped — git packs them
+ // uncompressed, causing large packfiles that OOM the git server.
const files = await ProjectEntityHandler.promises.getAllFiles(projectId)
for (const [path, file] of Object.entries(files)) {
+ if (!isTextFile(basename(path))) continue
const rel = path.startsWith('/') ? path.slice(1) : path
const dest = join(fileRoot, rel)
await mkdir(dirname(dest), { recursive: true })
diff --git a/services/web/locales/en.json b/services/web/locales/en.json
index 3ef830184b..ce9edcab72 100644
--- a/services/web/locales/en.json
+++ b/services/web/locales/en.json
@@ -1044,7 +1044,7 @@
"git_bridge_modal_learn_more_about_authentication_tokens": "Learn more about Git integration authentication tokens.",
"git_bridge_modal_read_only": "You have read-only access to this project. This means you can pull from __appName__ but you can’t push any changes you make back to this project.",
"git_sync": "Git Sync",
- "git_sync_description": "Force-push your project files to an external git repository. Include your auth token in the URL (e.g. https://user:token@github.com/org/repo.git).",
+ "git_sync_description": "Sync your project with an external git repository. Binary files (images, etc.) are excluded from the push — git is not suited for binary assets. Include your auth token in the URL.",
"git_sync_pull_now": "Pull from git",
"git_sync_pull_success": "Project updated from git remote successfully.",
"git_sync_pulling": "Pulling…",
diff --git a/services/web/locales/fr.json b/services/web/locales/fr.json
index 71a158d179..5efaef329b 100644
--- a/services/web/locales/fr.json
+++ b/services/web/locales/fr.json
@@ -1047,7 +1047,7 @@
"git_bridge_modal_learn_more_about_authentication_tokens": "Apprenez-en davantage sur les jetons d’authentification de l’intégration Git.",
"git_bridge_modal_read_only": "Vous disposez d'un accès en lecture seule à ce projet. Cela signifie que vous pouvez extraire des données de __appName__, mais que vous ne pouvez pas transférer les modifications que vous apportez à ce projet.",
"git_sync": "Synchronisation Git",
- "git_sync_description": "Pousse de force les fichiers du projet vers un dépôt git externe. Incluez votre jeton d'authentification dans l'URL (ex. https://user:token@github.com/org/repo.git).",
+ "git_sync_description": "Synchronisez votre projet avec un dépôt git externe. Les fichiers binaires (images, etc.) sont exclus de la poussée — git n'est pas adapté aux ressources binaires. Incluez votre jeton d'authentification dans l'URL.",
"git_sync_pull_now": "Tirer depuis git",
"git_sync_pull_success": "Projet mis à jour depuis le dépôt git avec succès.",
"git_sync_pulling": "Récupération…",