Add Flathub to your remotes
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
flatpak install flathub io.github.aganzha.Stage
flatpak run io.github.aganzha.Stage
sudo dnf install copr
sudo dnf copr enable aganzha/stage
sudo dnf install stage-git-gui
stage-git-gui
sudo add-apt-repository ppa:aganzha/stage
sudo apt update
sudo apt install stage-git-gui
stage-git-gui
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
o
- opens quick repo selectorCtrl
+o
- opens repo choosing dialogCtrl
+b
- blame line under cursor
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.
Git blame in Stage is a bit strange π Stage do not want to read your files directly. It only operates on diffs produced by libgit2. So, to view history of some line in code this line must somehow apear in Stage. This means you have to edit or delete this line π. Or line nearby (each change in git surrounded by 3 lines of context above and below). When you see your line in Stage you can put cursor on it and hit Ctrl
+b
. This will open up commit window pointing this line origin. Again, this works in Commit window to: hitting any line (except green one) in Commit window will bring another window with commit which contains this line adding.