Add Flathub to your remotes
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
Install app
flatpak install flathub io.github.aganzha.Stage
To update app to latest version run
flatpak update io.github.aganzha.Stage
Run app
flatpak run io.github.aganzha.Stage
Open repository either by clicking placeholder button, or repository list button in the header bar. Stage, then, will live track all changes you do on files inside repository and display in Status window in form of text diff.
Note
Highlighted line in Status window behave like a cursor in TUI apps.
Move cursor around with arrows or by mouse clicking in any area. Commands your issued for Stage are applied to "thing" under cursor. E.g. to stage (git add) file put cursor on file name and press s
, or click in header bar. Whole file will be added to staging area for further commit.
- Use
Ctrl +
/Ctrl -
to change font size. - dark / light theme switcher is in the burger
s
- Stage selected files or hunks or all changes by pressingenter
.u
- Unstage. Button -k
- KillTab/Space
- Expand/collapse underlying files and hunks.
Note
Stage operates on files and hunks as native git. You can expand/collapse files and hunks to view changes and choose hunks for commit.
- When cursor is on file name, whole file is a subject to issued command.
- When cursor is on hunk header or any line inside hunk, then current hunk is subject to command
Note
Current hunk under cursor is slightly highlighted.
c
- Commit. Button in headerbar -f
- Pull (as in Fetch). Button -p
- Push. Button -
b
- Branches windowl
- opens log windowz
- opens stashes panelt
- opens tags window
Note
Any window above Status window could be closed with Esc
or Ctrl-w
icon
This window allows quickly switch between branches: just move cursor with arrows and hit enter
, or double click.
To create new branch hit c
or button.
Tip
The branch you are creating will be based on the branch on which the cursor currently is. This means you can create new branch from branch feature
even though the current branch is master
, and quickly switch to it.
To delete branch hit k
or button
Warning
There are no any confirmation for branch deleting
Put cursor on branch you want to merge in current () branch and hit
m
(). Use
r
() for rebase.
Note
Sooner or later you will have conflicts during merge/rebase. When Stage displays conflicts it behaves a bit differently: when cursor is on ours
or theirs
side of conflict, whole side is highlighted and hitting s
tage will resolve this conflict. Conflict will disapear from Conflicts section. Sometimes you will see final result in Staged section, but it could not be the case if after resolving there are no changes in source code (e.g. you choose ours
side and source code remains the same).
Hit l
(as in Log) to view commits in branch under cursor in Log window.
Remote branches are just separate section in branches list and their behaviour and commands are just the same as local branches. E.g. just hit enter
or double click on remote branch and Stage will fetch it and switch to it.
To update remote branches hit u
or press button in headerbar.
When in main Status window or in Branches window hitting l
() will bring up Log window.
Note
Stage does not display merge commits
Log window is just a list of commits. You can search among them via panel in headerbar. Commits which come from other branches displaying arrows in separate column for convinience
Hitting enter
or single click on commit sha in Log window brings up the commit content window. Individual Commit window behaves same way as Status window, except its readonly.
- Hit
a
(as in Apply) to Cherry-pick commit onto current branch - Hit
r
(as in Revert) to Revert commit onto current branch
Hitting z
or icon will open stashes panel. Hitting
z
one more time will stash all changes.
Hitting t
in Status window brings up Tags window. That window behave as a simple list where you can c
- create, k
- delete (as in Kill) and p
- to push tags to remote.