{"id":17357068,"url":"https://github.com/julien040/gut","last_synced_at":"2026-06-07T20:01:09.665Z","repository":{"id":86138126,"uuid":"581102460","full_name":"julien040/gut","owner":"julien040","description":"A beginner friendly porcelain for git","archived":false,"fork":false,"pushed_at":"2025-04-01T20:21:57.000Z","size":317,"stargazers_count":500,"open_issues_count":0,"forks_count":5,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-08T11:11:15.482Z","etag":null,"topics":["cli","git","github","go","golang","gut","terminal","version-control"],"latest_commit_sha":null,"homepage":"https://gut-cli.dev","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/julien040.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-22T09:27:32.000Z","updated_at":"2025-04-01T20:21:46.000Z","dependencies_parsed_at":null,"dependency_job_id":"ecbfcd9b-4baf-45f4-9194-e613ce83a402","html_url":"https://github.com/julien040/gut","commit_stats":{"total_commits":134,"total_committers":2,"mean_commits":67.0,"dds":0.007462686567164201,"last_synced_commit":"83bd2e3ab2da71091eb8bae4097f2e70fa9525b9"},"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/julien040%2Fgut","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/julien040%2Fgut/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/julien040%2Fgut/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/julien040%2Fgut/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/julien040","download_url":"https://codeload.github.com/julien040/gut/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254442854,"owners_count":22071878,"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":["cli","git","github","go","golang","gut","terminal","version-control"],"created_at":"2024-10-15T19:00:05.526Z","updated_at":"2026-06-07T20:01:09.658Z","avatar_url":"https://github.com/julien040.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"# Gut\n\nGut is an alternative CLI for Git. It provides a consistent naming of commands and a useful set of features.\n\nIf you have years of muscle memory, gut is probably not for you.\n\n## Table of contents\n\n- [Gut](#gut)\n  - [Table of contents](#table-of-contents)\n  - [Example](#example)\n  - [Features](#features)\n  - [Main Useful Commands](#main-useful-commands)\n  - [Installation](#installation)\n    - [Windows](#windows)\n    - [MacOS](#macos)\n    - [Apt-get](#apt-get)\n    - [Yum](#yum)\n    - [AUR (Arch Linux)](#aur-arch-linux)\n      - [Compile yourself](#compile-yourself)\n      - [Use pre-compiled binary](#use-pre-compiled-binary)\n    - [Build from source](#build-from-source)\n  - [Principles](#principles)\n    - [Integration with cloud](#integration-with-cloud)\n    - [No rewriting of history](#no-rewriting-of-history)\n    - [Staging area isn’t a thing](#staging-area-isnt-a-thing)\n    - [Detached HEAD isn’t scary](#detached-head-isnt-scary)\n    - [Great user experience](#great-user-experience)\n    - [Coexist with Git](#coexist-with-git)\n  - [Documentation](#documentation)\n  - [FAQ](#faq)\n    - [Why was this project built?](#why-was-this-project-built)\n    - [How can I contact the developer?](#how-can-i-contact-the-developer)\n    - [Can I contribute?](#can-i-contribute)\n  - [Roadmap](#roadmap)\n  - [License](#license)\n  - [Authors](#authors)\n  - [Contributing](#contributing)\n\n## Example\n\n```bash\ncd my-awesome-project\n\n# Init a new git repo\ngut init\n\n# Do some changes\ntouch my-billion-dollar-idea.txt\n\n# Commit your new file\ngut save # Alias of gut commit\n\n# Sync your changes with the upstream\ngut sync\n```\n\n## Features\n\n- Built-in credentials manager\n- Consistent naming of commands\n- Integration with cloud platforms (merge and diff opens in the web UI)\n- `gut fix` command helps you fix your mistakes with git\n- `.gitignore` template downloader\n- Simplified authentication with GitHub\n\n## Main Useful Commands\n\n- `gut save` - Commits changes using gitmoji\n- `gut sync` - Syncs changes with your remote repository\n- `gut goto` - Lets you rewind the state of your project to a particular commit by temporarily modifying the working tree\n- `gut fix` - Helps you fix your mistakes with git\n- `gut revert` - Reverts your project to a previous state to fix a bug introduced n commits ago\n- `gut undo` - Discards changes made since the last commit\n- `gut ignore` - Downloads templates of `.gitignore`\n- `gut whereami` - Shows where your HEAD points to (no more `rev-parse`)\n- `gut switch` - Creates a new branch or switches to an existing one\n- `gut attributes` - Downloads templates of `.gitattributes`\n\n## Installation\n\n### Windows\n\nTo install gut on Windows, run\n\n```bash\nscoop bucket add gut https://github.com/julien040/gut-scoop\nscoop install gut/gut\n```\n\n### MacOS\n\nTo install gut on macOS, open the Terminal and run\n\n```bash\nbrew install gut\n```\n\n### Apt-get\n\n```bash\necho \"deb [trusted=yes] https://apt.gut-cli.dev /\" | sudo tee /etc/apt/sources.list.d/gut.list\nsudo apt-get update\nsudo apt-get install gut\n```\n\n### Yum\n\nNobara Linux is not supported (see [issue #68](https://github.com/julien040/gut/issues/68))\n\n```bash\nsudo tee /etc/yum.repos.d/gut.repo \u003c\u003cEOF\n[gut]\nname=Gut Repository\nbaseurl=https://yum.gut-cli.dev/\nenabled=1\ngpgcheck=0\nEOF\nsudo yum update\nsudo yum install gut\n```\n\n### AUR (Arch Linux)\n\n**Note:** The AUR packages are not maintained by me. If you have any issues with them, please contact the maintainer of the package.\n\n#### Compile yourself\n\n```bash\nyay -S gut\n```\n\n#### Use pre-compiled binary\n\n```bash\nyay -S gut-bin\n```\n\n### Build from source\n\nYou need to have go installed on your machine\n\n```bash\ngo install github.com/julien040/gut@latest\n```\n\n## Principles\n\n### Integration with cloud\n\nWe have several tools like GitHub, GitLab, or BitBucket. So, why not use them to their fullest? When you attempt to merge a branch, gut will open a page to create a pull request. If you want to compare two commits, gut will open the compare view in your favorite repository hosting.\n\n### No rewriting of history\n\nGut will never allow you to modify the history pushed to a remote repository.\n\nIf you want to cancel your changes, run `gut revert`. It will create a new commit containing the state of the commit selected.\n\nIf you made a typo in your commit message, gut will only allow you to change it if it hasn’t been pushed yet. The same thing applies if you attempt to amend files of a commit.\n\n### Staging area isn’t a thing\n\nEverything git tracks will be saved in your next commit.\n\nGut tracks all files unless they are listed on your `.gitignore`. After all, it exists for a reason.\n\n### Detached HEAD isn’t scary\n\nWith gut, getting into a detached HEAD is pretty trivial. Just run `gut goto \u003ccommit id\u003e` to change your working tree according to that commit.\nBut gut won’t leave you there.\n\nIn detached HEAD, every operation is blocked until you do something with that commit. You can come back to a branch or create a new one from that commit.\nBy blocking operations, you won’t create several commits before realizing they aren’t linked to anything.\n\n### Great user experience\n\nIf you make a mistake, gut will try to figure it out and prompt you again.\nAnd if gut can’t help you, it will do its best to guide you to solve the issue.\n\nI believe that when learning new technology, it's best to start with a high-level understanding and then gradually delve deeper over time. Specifically, when it comes to Git, I find that it can seem complex right from the beginning (such as setting `user.email` and `user.name`)\n\n### Coexist with Git\n\nWhile **`gut`** is a useful CLI tool, it's not intended to replace the **`git`** CLI. In fact, if Git were to disappear, **`gut`** would no longer function since it heavily relies on Git commands internally.\n\nThat being said, I believe that **`gut`** is an excellent choice for simple tasks, while Git can still be utilized for more complex tasks.\n\n## Documentation\n\n[Documentation](https://gut-cli.dev/docs)\n\n## FAQ\n\n### Why was this project built?\n\nIn my two years of learning how to code, I found `git` to be extremely frustrating. I was always scared of doing the wrong thing and not being able to revert it. This is why I built `gut` - so that everyone can use `git` without the headaches.\n\n### How can I contact the developer?\n\nTo discuss a new feature you would like to see, open a new discussion on GitHub.\n\nFor a bug, open a new issue.\n\nFor anything related to security, commercial or press, send an email to [contact@julienc.me](mailto:contact@julienc.me).\n\n### Can I contribute?\n\nOf course, you can!\n\n## Roadmap\n\n- Create and delete tags.\n- Conflict resolution.\n- `gut restore` to checkout specific files.\n- `gut commit sparsely` to create a commit with specified files rather than all files.\n- `gut time-machine` to go back in time (e.g. reverse a pull).\n- Open a new discussion if you want your feature to be added here!\n\n## License\n\n[MIT](https://choosealicense.com/licenses/mit/)\n\n## Authors\n\n- [@julien040](https://github.com/julien040)\n\n## Contributing\n\nContributions are always welcome!\n\nSee `contributing.md` for ways to get started.\n\nPlease adhere to this project's `code of conduct`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjulien040%2Fgut","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjulien040%2Fgut","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjulien040%2Fgut/lists"}