Skip to content

Commit and Sync

Loky edited this page Oct 13, 2026 · 4 revisions

Commit and Sync

Stage and commit

  • Stage / unstage files one by one, by multi-selection (Enter) or in bulk (Stage All / Unstage All).
  • Status colors and icons per file. Conflicted files and oversized files get a warning icon.
  • Multiline commit messages. Files with accented or non-Latin names (Lumière.mp3) work.
  • While a write runs, Commit shows "Working..." and the stage buttons are disabled. Push and Pull count as writes: nothing can be committed or switched in the middle of them. Message and Amend are cleared only on success.
  • Each Staged / Unstaged list draws its first 500 rows, then "N more files not shown" and a Show all button. Stage All stages every file, shown or not. The row selection survives a refresh.

Amend

Toggle Amend to run commit --amend (a blank message keeps the old one via --no-edit). A confirmation dialog appears first: always when the commit is already pushed (the ahead count says so), otherwise while confirm_amend is on (see Settings).

Push and Pull

Push runs git push -u origin HEAD. The Push tooltip always states what it will do right now. Before pushing, Gitot decides from the ahead/behind counts (no git call):

State Action
In sync / ahead / no upstream yet Normal push
Diverged Confirmation dialog with the counts, then --force-with-lease
Only behind Refused: "Pull first" (a forced push would rewind origin)

confirm_push in Settings adds a confirmation to every push. Cancelling any dialog changes nothing and logs a message. Push, Amend and Create-branch dialogs name what they act on (branch, repo, and for Amend whether the message is kept or replaced).

Results name the branch and repo (Commits pushed to 'owner/repo' on branch 'dev'.; a forced push says so). On failure you get the error, git's raw message and a Hint line with the common fail causes. Credentials: see Credentials and GitHub Token.

Starting without a repository

If the project folder has no .git, the dock shows Initialize repository instead of the panels. It runs git init -b main (needs Git 2.28+) and creates a .gitignore (.godot/ and *.translation, as the Godot docs recommend) only if none exists; an existing one is never touched. The remote is not needed yet. A new repository has no commit yet: main is shown in the status line but only appears in the Branches list after your first commit (git lists no branch before that).

First push with no remote: commit, then press Push. Gitot asks for the repository URL (https://host/owner/repo.git, ssh://git@host/owner/repo.git or git@host:owner/repo.git), runs git remote add origin <url>, then continues with the normal first push (git push -u origin HEAD). Create the empty repository on GitHub first. Cancelling the prompt changes nothing. URLs with user:token@ are refused (the token would be stored in plain text in .git/config): see Credentials and GitHub Token.

Tag versioning

Push with or without an annotated tag. Settings can auto-fill the tag name from the project Version (with an automatic v prefix) and the tag message from the commit message. The tag name is validated before the tag is created, so an unpushable tag is never made.

Large-File Guard

Staging a file above large_file_mb (default 50 MB, 0 disables) is blocked and flagged. LFS-tracked files are exempt when LFS is ready, and a flagged file gets a one-click Track with LFS button. See Git LFS.

Repo status line

One line: owner/repo · branch (local/remote) · ↑ahead ↓behind. Detached HEAD is shown in red. Click owner/repo to open the repository in your browser (the tooltip shows the address). No link, plain text, when the origin URL has no safe web form: see Troubleshooting.

Clone this wiki locally