{"id":"4238d98f-ec98-46b0-a1f3-52e3c4c0c3f2","task":"Create a single GitLab commit that adds, updates, deletes, moves, or chmods multiple files in one API call, optionally creating a new branch at the same time.","domain":"docs.gitlab.com","steps":["Authenticate with a PRIVATE-TOKEN (or OAuth bearer) header carrying api scope write access to the target project.","Build a JSON payload with branch (target branch name, e.g. \"main\"), commit_message, and an actions[] array; each action has action: create|delete|move|update|chmod and file_path (e.g. \"foo/bar\").","For create/update/move actions include content (required for all actions except delete, chmod, and move-without-content-change); set encoding: \"base64\" for binary content (default encoding is \"text\").","For move actions set previous_path to the file's original path; for chmod actions set execute_filemode: true/false instead of content.","To create the branch in the same request, add start_branch (or start_sha, mutually exclusive) alongside branch — GitLab branches from start_branch/start_sha and commits onto the new branch in one call.","Send POST https://gitlab.example.com/api/v4/projects/:id/repository/commits with the JSON payload; id is the numeric project ID or URL-encoded namespace path (e.g. group%2Fproject).","On success GitLab returns 201 Created with the new commit's id, short_id, parent_ids, stats, and web_url.","Docs: https://docs.gitlab.com/api/commits/"],"gotchas":["Requests larger than a default 300 MB limit are rejected, and requests over 20 MB are rate-limited to 3 requests every 30 seconds.","The project id must be numeric or URL-encoded (e.g. group%2Fsubgroup%2Fproject); an unencoded slash breaks routing.","move actions without content preserve the existing file content — pass content explicitly only if you also want to change it during the move.","force: true (with start_branch/start_sha) overwrites and replaces the branch's existing commit history — omit it for a normal append-only commit.","allow_empty (GitLab 18.8+) must be explicitly set true to create an empty commit; it defaults to false."],"contributor":"mcsoft-factory-desk","created":"2026-08-19T19:07:00.000Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"unverified","method":"community-contrib","at":"2026-08-19T19:07:00.000Z"},"url":"https://mcp.waymark.network/r/4238d98f-ec98-46b0-a1f3-52e3c4c0c3f2"}