{"id":17936943,"url":"https://github.com/aganzha/stage","last_synced_at":"2026-04-17T05:03:58.855Z","repository":{"id":259326681,"uuid":"729389428","full_name":"aganzha/stage","owner":"aganzha","description":"Stage - Git GUI client for linux desktops inspired by Magit","archived":false,"fork":false,"pushed_at":"2024-10-24T04:46:44.000Z","size":2272,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-10-24T12:25:36.654Z","etag":null,"topics":["developer-tools","flatpak","git","gtk-rs","gtk4","gui-application","libadwaita"],"latest_commit_sha":null,"homepage":"https://gihub.com/aganzha/stage","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aganzha.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-12-09T04:38:58.000Z","updated_at":"2024-10-24T04:46:48.000Z","dependencies_parsed_at":"2024-10-24T12:32:12.882Z","dependency_job_id":"f45293d4-2e79-47cf-93fb-2b8a07fc73c4","html_url":"https://github.com/aganzha/stage","commit_stats":null,"previous_names":["aganzha/stage"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aganzha%2Fstage","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aganzha%2Fstage/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aganzha%2Fstage/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aganzha%2Fstage/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aganzha","download_url":"https://codeload.github.com/aganzha/stage/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246992776,"owners_count":20865881,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["developer-tools","flatpak","git","gtk-rs","gtk4","gui-application","libadwaita"],"created_at":"2024-10-28T22:05:29.355Z","updated_at":"2026-04-17T05:03:58.839Z","avatar_url":"https://github.com/aganzha.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp float=\"left\"\u003e\n  \u003cpicture\u003e\u003csource srcset=\"./icons/64x64/io.github.aganzha.Stage.png\"\u003e\u003cimg valign=\"middle\" alt=\"Stage logo\" src=\"./icons/64x64/io.github.aganzha.Stage.png\" width=\"32\"\u003e\u003c/picture\u003e\n   \u003cstrong\u003eStage\u003c/strong\u003e -\n   \u003cspan\u003eGit GUI client for linux desktops inspired by Magit\u003c/span\u003e\n\u003c/p\u003e\n\n![CI Build/Tests](https://github.com/aganzha/stage/actions/workflows/tests.yml/badge.svg)\n[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\n[![Copr build status](https://custom-icon-badges.demolab.com/badge/Fedora--5FBFFF.svg?logo=fedora-linux)](https://copr.fedorainfracloud.org/coprs/aganzha/stage/package/stage-git-gui/)\n[![PPA build status](https://custom-icon-badges.demolab.com/badge/Ubuntu--FF8926.svg?logo=ubuntu-new)](https://launchpad.net/~aganzha/+archive/ubuntu/stage)\n[![Docs](https://img.shields.io/badge/docs-orange)](https://aganzha.github.io/stage/)\n\n## Installing\n### Flatpak\nAdd [Flathub](https://flathub.org/apps/io.github.aganzha.Stage) to your remotes\n```sh\nflatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo\nflatpak install flathub io.github.aganzha.Stage\nflatpak run io.github.aganzha.Stage\n```\n\n### Fedora 42\n```sh\nsudo dnf install copr\nsudo dnf copr enable aganzha/stage\nsudo dnf install stage-git-gui\nstage-git-gui\n```\n### Ubuntu 25.04\n```sh\nsudo add-apt-repository ppa:aganzha/stage\nsudo apt update\nsudo apt install stage-git-gui\nstage-git-gui\n```\n\n## Using\nOpen 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.\n\n\u003e [!NOTE]\n\u003e Highlighted line in Status window behave like a cursor in TUI apps.\n\nMove 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 \u003cimg class=\"inline\" src=\"https://raw.githubusercontent.com/keenlycode/gnomicon/refs/heads/main/src/icon/go-bottom-symbolic.svg\"/\u003e in header bar. Whole file will be added to staging area for further commit.\n\n- Use `Ctrl +` / `Ctrl -` to change font size.\n- dark / light theme switcher is in the burger\n\n\u003cpicture\u003e\u003csource srcset=\"https://github.com/user-attachments/assets/aae0b833-6979-4644-8f4c-83f4eda739c1\"\u003e\u003cimg alt=\"Stage screenshot\" src=\"https://github.com/user-attachments/assets/aae0b833-6979-4644-8f4c-83f4eda739c1\"\u003e\u003c/picture\u003e\n\n### Main commands\n\n- `s` - **S**tage selected files or hunks or all changes by pressing `enter`. \u003cimg class=\"inline\" src=\"https://raw.githubusercontent.com/keenlycode/gnomicon/refs/heads/main/src/icon/go-bottom-symbolic.svg\"/\u003e\n- `u` - **U**nstage. Button - \u003cimg class=\"inline\" src=\"https://raw.githubusercontent.com/keenlycode/gnomicon/refs/heads/main/src/icon/go-top-symbolic.svg\"/\u003e\u003c/li\u003e\n- `k` - **K**ill\n- `Tab/Space` - Expand/collapse underlying files and hunks.\n\n\u003e [!NOTE]\n\u003e Stage operates on files and hunks as native git. You can expand/collapse files and hunks to view changes and choose hunks for commit.\n\n+ When cursor is on file name, **whole file** is a subject to issued command.\n+ When cursor is on hunk header or any line inside hunk, then **current hunk** is subject to command\n\n\u003e [!NOTE]\n\u003e Current hunk under cursor is slightly highlighted.\n\n### Commit/Push/Pull\n- `c` - **C**ommit. Button in headerbar - \u003cpicture\u003e\u003csource srcset=\"./icons/object-select-symbolic.svg\"\u003e\u003cimg valign=\"middle\" alt=\"Commit button\" src=\"./icons/object-select-symbolic.svg\" width=\"12\"\u003e\u003c/picture\u003e\n- `f` - Pull (as in **F**etch). Button - \u003cpicture\u003e\u003csource srcset=\"./icons/document-save-symbolic.svg\"\u003e\u003cimg valign=\"middle\" alt=\"Pull button\" src=\"./icons/document-save-symbolic.svg\"\u003e\u003c/picture\u003e\n- `p` - **P**ush. Button - \u003cpicture\u003e\u003cimg valign=\"middle\" alt=\"Push button\" src=\"./icons/send-to-symbolic.svg\" width=\"12\"\u003e\u003c/picture\u003e\n\n### Command showing other windows\n- `b` - Branches window \u003cpicture\u003e\u003csource srcset=\"./icons/org.gtk.gtk4.NodeEditor-symbolic.svg\" \u003e \u003cimg valign=\"middle\" alt=\"Branches button\" src=\"./icons/org.gtk.gtk4.NodeEditor-symbolic.svg\"\u003e\u003c/picture\u003e\n- `l` - opens log window \u003cpicture\u003e\u003csource srcset=\"./icons/org.gnome.Logs-symbolic.svg\"\u003e\u003cimg valign=\"middle\" alt=\"Push button\" src=\"./icons/org.gnome.Logs-symbolic.svg\" width=\"12\"\u003e\u003c/picture\u003e\n- `z` - opens stashes panel \u003cpicture\u003e\u003csource srcset=\"./icons/sidebar-show-symbolic.svg\"\u003e\u003cimg valign=\"middle\" alt=\"Push button\" src=\"./icons/sidebar-show-symbolic.svg\" width=\"12\"\u003e\u003c/picture\u003e\n- `t` - opens tags window\n\n### Other Commands\n- `o` - opens quick repo selector\n- `Ctrl` + `o` - opens repo choosing dialog\n- `Ctrl` + `b` - blame line under cursor\n\n\n\u003e [!NOTE]\n\u003e Any window above Status window could be closed with `Esc` or `Ctrl-w`\n\n### Branches window\n\u003cpicture\u003e\u003csource srcset=\"https://github.com/user-attachments/assets/a07cd1bf-b435-40ad-beca-edbabc5d285f\"\u003e \u003cimg alt=\"Branches view\" src=\"https://github.com/user-attachments/assets/a07cd1bf-b435-40ad-beca-edbabc5d285f\"\u003e\u003c/picture\u003e\nCurrent branch is marked with \u003cimg class=\"inline\" src=\"https://raw.githubusercontent.com/keenlycode/gnomicon/refs/heads/main/src/icon/avatar-default-symbolic.svg\"/\u003e icon\n\n#### Switching, creating and deleting branches\nThis window allows quickly switch between branches: just move cursor with arrows and hit \u003ccode\u003eenter\u003c/code\u003e, or double click.\n\nTo create new branch hit \u003ccode\u003ec\u003c/code\u003e or \u003cimg class=\"inline\" src=\"https://raw.githubusercontent.com/keenlycode/gnomicon/refs/heads/main/src/icon/list-add-symbolic.svg\"/\u003e button.\u003cbr/\u003e      \n\u003e [!TIP]\n\u003e 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.\n\nTo delete branch hit `k` or \u003cimg class=\"inline\" src=\"https://raw.githubusercontent.com/keenlycode/gnomicon/refs/heads/main/src/icon/user-trash-symbolic.svg\"/\u003e button\n\u003e [!WARNING]\n\u003e There are no any confirmation for branch deleting\n\n#### Merge and rebase\nPut cursor on branch you want to merge in current (\u003cimg class=\"inline\" src=\"https://raw.githubusercontent.com/keenlycode/gnomicon/refs/heads/main/src/icon/avatar-default-symbolic.svg\"/\u003e) branch and hit `m` (\u003cimg class=\"inline\" src=\"https://raw.githubusercontent.com/keenlycode/gnomicon/refs/heads/main/src/icon/media-playlist-shuffle-symbolic.svg\"/\u003e). Use `r` (\u003cimg class=\"inline\" src=\"https://raw.githubusercontent.com/keenlycode/gnomicon/refs/heads/main/src/icon/media-playlist-repeat-song-symbolic.svg\"/\u003e) for rebase.\n\n\u003e [!NOTE]\n\u003e 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).\n\n#### View branch commits\nHit `l` (as in **L**og) to view commits in branch under cursor in Log window.\n\n### Remotes\nRemote 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.\n\nTo update remote branches hit \u003ccode\u003eu\u003c/code\u003e or press \u003cimg class=\"inline\" src=\"https://raw.githubusercontent.com/keenlycode/gnomicon/refs/heads/main/src/icon/view-refresh-symbolic.svg\"/\u003e button in headerbar.\n\n\u003e [!TIP]\n\u003e You can manage remotes in Status window by pressing \u003cimg class=\"inline\" src=\"https://raw.githubusercontent.com/keenlycode/gnomicon/refs/heads/main/src/icon/network-server-symbolic.svg\"/\u003e button.\n\n#### Log window\nWhen in main Status window or in Branches window hitting `l` (\u003cimg class=\"inline\" src=\"https://raw.githubusercontent.com/aganzha/stage/refs/heads/master/icons/org.gnome.Logs-symbolic.svg\"/\u003e) will bring up Log window.      \n  \n\u003e [!NOTE]\n\u003e Stage does not display merge commits\n\nLog 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\n\n#### Commits window\nHitting `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.\n\n- Hit `a` (as in **A**pply) to Cherry-pick commit onto current branch \u003cimg class=\"inline\" src=\"https://raw.githubusercontent.com/keenlycode/gnomicon/refs/heads/main/src/icon/emblem-shared-symbolic.svg\"/\u003e\n- Hit `r` (as in **R**evert) to Revert commit onto current branch \u003cimg class=\"inline\" src=\"https://raw.githubusercontent.com/keenlycode/gnomicon/refs/heads/main/src/icon/edit-undo-symbolic.svg\"/\u003e\u003c/li\u003e\n  \n### Stashes panel\nHitting `z` or \u003cimg class=\"inline\" src=\"https://raw.githubusercontent.com/keenlycode/gnomicon/refs/heads/main/src/icon/sidebar-show-symbolic.svg\"/\u003e icon will open stashes panel. Hitting \u003ccode\u003ez\u003c/code\u003e one more time will stash all changes.\n\n### Tags window\nHitting `t` in Status window brings up Tags window. That window behave as a simple list where you can `c` - create, `k` - delete (as in **K**ill) and `p` - to push tags to remote.\n\n### Blame\nGit blame in Stage is a bit strange :smiley: 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 :smiley:. 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.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faganzha%2Fstage","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faganzha%2Fstage","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faganzha%2Fstage/lists"}