Skip to content
Lars-Public

About

A fast, open-source graphical git client, written in pure Rust. Commit graph, staging of single lines, branches, merges, rebases and remotes, on Windows, macOS and Linux.

Topics

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

GitCraft

GitCraft

A fast, open-source graphical git client, written in pure Rust.
See every branch at once in a commit graph, stage single lines, commit, branch, merge, rebase and push, on Windows, macOS and Linux. Big repositories open instantly.

CI Licence: MIT or Apache-2.0 Status: early

GitCraft with two repositories open in tabs: branches on the left, the commit graph with branch and tag labels in the middle, and the uncommitted changes with the commit form on the right

Fast

GitCraft reads the whole history in-process with gitoxide and only lays out and reads the rows on screen, so the size of a repository hardly matters. Measured on git.git (85,875 commits, every branch and tag):

GitCraft for comparison
Open the whole history and lay out the graph 0.11 s git rev-list --all --date-order: 0.09 s
The same without a commit-graph file 0.61 s git rev-list: 0.59 s
Read and lay out one screen of commits 0.1 ms
Lay out 200,000 commits on 12 branches 28 ms

Measured with cargo bench on an Intel Core i9-14900K. Every pull request runs the same benchmarks against the main branch, and one that makes GitCraft slower does not get merged.

What works

GitCraft is young. This is what it does today; ROADMAP.md has what comes next. Being an early version, it does not yet ask for confirmation before a hard reset, so take care with that one.

  • Start: open a folder, clone from a URL with git's progress as it goes, or create a new repository.
  • Tabs: keep several repositories open at once; they open again where you left them.
  • Live: what you change in an editor, a build or a terminal shows up by itself; files git ignores do not wake it.
  • Graph: every branch, remote branch and tag in one graph, children above parents, with coloured lanes, branch and tag labels and the uncommitted changes on top. Arrow keys walk it.
  • Commits: message, author, parents and the files they changed, with the diff of each file.
  • Staging: stage or unstage files, whole hunks or single lines, then commit or amend.
  • Branches and tags: create, check out, merge, rebase, delete, from the sidebar or a right click.
  • Commits from the graph: check out, cherry-pick, revert, reset (soft, mixed, hard), copy the SHA.
  • Remotes: fetch, pull and push, with how far ahead and behind you are.
  • Stashes: stash, apply, pop and drop.

GitCraft runs your own git for everything that changes a repository, so your config, hooks, credentials and commit signing work exactly as they do on the command line.

Install

GitCraft needs git on your PATH.

Builds for Windows, macOS and Linux (x86-64 and ARM) come with each release. To build it yourself, install Rust and run:

cargo install --git https://github.com/Lars-/gitcraft gitcraft
gitcraft path/to/repository

Contributing

Contributions are very welcome: bug reports, ideas and pull requests. Read CONTRIBUTING.md first; the short version is that every change comes with tests, does what it does in as little code as possible, and does not make GitCraft slower.

Licence

GitCraft is licensed under either the MIT licence or the Apache License 2.0, at your option. Unless you say otherwise, any contribution you submit is licensed the same way, without extra terms.

GitCraft is an independent project and is not affiliated with GitKraken or Axosoft.

About

A fast, open-source graphical git client, written in pure Rust. Commit graph, staging of single lines, branches, merges, rebases and remotes, on Windows, macOS and Linux.

Topics

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages