Git Software for Windows

View 40 business solutions
  • Full-stack observability with actually useful AI | Grafana Cloud Icon
    Full-stack observability with actually useful AI | Grafana Cloud

    Our generous forever free tier includes the full platform, including the AI Assistant, for 3 users with 10k metrics, 50GB logs, and 50GB traces.

    Built on open standards like Prometheus and OpenTelemetry, Grafana Cloud includes Kubernetes Monitoring, Application Observability, Incident Response, plus the AI-powered Grafana Assistant. Get started with our generous free tier today.
    Create free account
  • Streamline Azure Security with Palo Alto Networks VM-Series Icon
    Streamline Azure Security with Palo Alto Networks VM-Series

    Centrally manage physical and virtualized firewalls with Panorama

    Improve your security posture and reduce incident response time. Use the VM-Series to natively analyze Azure traffic and dynamically drive policy updates based on workload changes.
    Learn more
  • 1
    git-delete-merged-branches

    git-delete-merged-branches

    Command-line tool to delete merged Git branches

    A convenient command-line tool helping you keep repositories clean. Supports deletion of both local and remote branches. Detects multiple forms of de-facto merges (rebase merges, squash merges (needs --effort=3), single or range cherry-picks… leveraging git cherry). Supports workflows with multiple release branches, e.g. only delete branches that have been merged to all of master, dev and staging. Quick interactive configuration. Provider agnostic: Works with GitHub, GitLab, Gitea and any other Git hosting. Takes safety seriously. Deletion is a sharp knife that requires care. While git reflog would have your back in most cases, git-delete-merged-branches takes safety seriously. git push is used with --force-with-lease so if the server and you have a different understanding of that branch, it is not deleted. There is no use of os.system or shell code to go wrong.
    Downloads: 5 This Week
    Last Update:
    See Project
  • 2
    git-reflow

    git-reflow

    Reflow automatically creates pull requests

    Reflow automatically creates pull requests, ensures the code review is approved, and squash merges finished branches to master with a great commit message template. Enforce code reviews across your team. Know that your entire team delivers code the same way. Reduce the knowledge needed to deliver great code. Have a commit history that's clean and actually usable. Revert features with ease (if needed). Work with diverse teams with less worry about different processes. Stop searching for other git workflows. Reflow covers 90% of your needs without junk you'll never use. Git-reflow's default process isn't meant to fit every team, which is why we've introduced Custom Workflows. With a custom workflow, you can add hooks to be run before, or after any command. Use one of our pre-configured workflows as a basis for your own.
    Downloads: 5 This Week
    Last Update:
    See Project
  • 3
    gitsigns.nvim

    gitsigns.nvim

    Git integration for buffers

    Super fast git decorations implemented purely in lua/teal. Signs for added, removed, and changed lines. Asynchronous using luv. Navigation between hunks. Stage hunks (with undo). Preview diffs of hunks (with word diff). Customizable (signs, highlights, mappings, etc). Status bar integration. Git blame a specific line using virtual text. Hunk text object. Automatically follow files moved in the index. Live intra-line word diff. Ability to display deleted/changed lines via virtual lines. Support for yadm. Support for detached working trees. If you are running a development version of Neovim (aka master), then breakage may occur if your build is behind latest. Gitsigns provides an on_attach callback which can be used to setup buffer mappings. This plugin is actively developed and by one of the most well regarded vim plugin developers. Gitsigns will only implement features of this plugin if: it is simple, or, the technologies leveraged by Gitsigns (LuaJIT, Libuv, Neovim's API, etc).
    Downloads: 5 This Week
    Last Update:
    See Project
  • 4
    isomorphic-git

    isomorphic-git

    A pure JavaScript implementation of git for node and browsers!

    A pure JavaScript implementation of git for node and browsers! Clone repos, create commits, push branches and more in client-side JS. It uses the same on-disk format as git so it works with existing repos. isomorphic-git is a pure JavaScript implementation of git that works in node and browser environments (including WebWorkers and ServiceWorkers). This means it can be used to read and write to git repositories, as well as fetch from and push to git remotes like GitHub. isomorphic-git aims for 100% interoperability with the canonical git implementation. This means it does all its operations by modifying files in a ".git" directory just like the git you are used to. The included isogit CLI can operate on git repositories on your desktop or server. isomorphic-git aims to be a complete solution with no assembly required. The API has been designed with modern tools like Rollup and Webpack in mind.
    Downloads: 5 This Week
    Last Update:
    See Project
  • $300 in Free Credit Towards Top Cloud Services Icon
    $300 in Free Credit Towards Top Cloud Services

    Build VMs, containers, AI, databases, storage—all in one place.

    Start your project in minutes. After credits run out, 20+ products include free monthly usage. Only pay when you're ready to scale.
    Get Started
  • 5
    lint-staged

    lint-staged

    Run linters on git staged files

    Run linters against staged git files and don't let anything slip into your code base! Linting makes more sense when run before committing your code. By doing so you can ensure no errors go into the repository and enforce code style. But running a lint process on a whole project is slow, and linting results can be irrelevant. Ultimately you only want to lint files that will be committed. This project contains a script that will run arbitrary shell tasks with a list of staged files as an argument, filtered by a specified glob pattern. Linter commands work on a subset of all staged files, defined by a glob pattern. lint-staged uses micromatch for matching files. The concept of lint-staged is to run configured linter tasks (or other tasks) on files that are staged in git. lint-staged will always pass a list of all staged files to the task, and ignoring any files should be configured in the task itself.
    Downloads: 5 This Week
    Last Update:
    See Project
  • 6
    opam

    opam

    opam is a source-based package manager

    Opam is a source-based package manager for OCaml. It supports multiple simultaneous compiler installations, flexible package constraints, and a Git-friendly development workflow. Opam was created and is maintained by OCamlPro. To get started, checkout the Install and Usage guides. Run ./configure. If you don't have the dependencies installed, this will locally take care of all OCaml dependencies for you (downloading them, unless you used the inclusive archive we provide for each release). This is all you need for installing and using opam, but if you want to use the opam-lib (to work on opam-related tools), you need to link it to installed libraries. It's easier to already have a working opam installation in this case, so you can do it as a second step. If you install on your system (without changing the prefix), you will need to install as root (sudo). As sudo do not propagate environment variables, there wil be some errors.
    Downloads: 5 This Week
    Last Update:
    See Project
  • 7
    simple-git-hooks

    simple-git-hooks

    A simple git hooks manager for small projects

    A simple git hooks manager for small projects. A git hook is a command or script that is going to be run every time you perform a git action, like git commit or git push. If the execution of a git hook fails, then the git action aborts. For example, if you want to run linter on every commit to ensure code quality in your project, then you can create a pre-commit hook that would call npx lint-staged. Check out lint-staged. It works really well with simple-git-hooks. You can look up about git hooks on the Pro Git book. simple-git-hooks works well for small-sized projects when you need quickly set up hooks and forget about it. However, this package requires you to manually apply the changes to git hooks. If you update them often, this is probably not the best choice. Also, this package allows you to set only one command per git hook.
    Downloads: 5 This Week
    Last Update:
    See Project
  • 8
    Blamer.el

    Blamer.el

    A git blame plugin for emacs inspired by VS Code's GitLens plugin

    A git blame plugin for emacs inspired by VS Code’s GitLens plugin and Vim plugin.
    Downloads: 4 This Week
    Last Update:
    See Project
  • 9
    CPM.cmake

    CPM.cmake

    CMake's missing package manager

    CPM.cmake is a cross-platform CMake script that adds dependency management capabilities to CMake. It's built as a thin wrapper around CMake's FetchContent module that adds version control, caching, a simple API and more. Any downloadable project or resource can be added as a version-controlled dependency though CPM, it is not necessary to modify or package anything. Projects using modern CMake are automatically configured and their targets can be used immediately. For everything else, the targets can be created manually after the dependency has been downloaded. After CPM.cmake has been added to your project, the function CPMAddPackage can be used to fetch and configure a dependency. Afterwards, any targets defined in the dependency can be used directly. CPMAddPackage takes the following named parameters. The origin may be specified by a GIT_REPOSITORY, but other sources, such as direct URLs, are also supported.
    Downloads: 4 This Week
    Last Update:
    See Project
  • Gemini 3 and 200+ AI Models on One Platform Icon
    Gemini 3 and 200+ AI Models on One Platform

    Access Google's best plus Claude, Llama, and Gemma. Fine-tune and deploy from one console.

    Build, govern, and optimize agents and models with Gemini Enterprise Agent Platform.
    Start Free
  • 10
    Dolt

    Dolt

    Dolt, it's Git for data

    Dolt is a SQL database that you can fork, clone, branch, merge, push and pull just like a git repository. Connect to Dolt just like any MySQL database to run queries or update the data using SQL commands. Use the command line interface to import CSV files, commit your changes, push them to a remote, or merge your teammate's changes. All the commands you know for Git work exactly the same for Dolt. Git versions files, Dolt versions tables. It's like Git and MySQL had a baby. We also built DoltHub, a place to share Dolt databases. We host public data for free. If you want to host your own version of DoltHub, we have DoltLab. If you want us to run a Dolt server for you, we have Hosted Dolt. MySQL comes with a MySQL server called mysqld and a MySQL client called mysql. You're only interested in the client. After following the instructions from MySQL's documentation, make sure you have a copy of the mysql client on your path.
    Downloads: 4 This Week
    Last Update:
    See Project
  • 11
    GIT quick statistics

    GIT quick statistics

    An efficient way to access various statistics in git repository

    git-quick-stats is a simple and efficient way to access various statistics in a git repository. Any git repository may contain tons of information about commits, contributors, and files. Extracting this information is not always trivial, mostly because there are a gadzillion options to a gadzillion git commands. For those who prefer to utilize command-line options, git-quick-stats also has a non-interactive mode supporting both short and long options. You can change to the legacy color scheme by toggling the variable _MENU_THEME between default and legacy. You can set variable _GIT_LIMIT for limited output. It will affect the "changelogs" and "branch tree" options. You can also exclude files from the stats. Note that it works with any alphanumeric, glob, or regex that git respects.
    Downloads: 4 This Week
    Last Update:
    See Project
  • 12
    Git Blame Someone Else

    Git Blame Someone Else

    Blame someone else for your bad code

    git-blame-someone-else is a humorous Git utility created as a joke to let developers attribute problematic code to someone else. It modifies both the author and committer information of a commit, making it appear as though another contributor is responsible for the changes. While not intended for production repositories, it demonstrates how Git’s metadata can be manipulated for fun or demonstration purposes. The project highlights how easily commit authorship can be altered, serving as both a lighthearted tool and a reminder about the importance of trust in version control history. It’s written in shell script and is lightweight, requiring only Git and basic system tools to run. Despite being a novelty project, its popularity shows how developers appreciate humor injected into the programming ecosystem.
    Downloads: 4 This Week
    Last Update:
    See Project
  • 13
    Git-FTP

    Git-FTP

    Uses Git to upload only changed files to FTP servers

    If you use Git and you need to upload your files to an FTP server, Git-ftp can save you some time and bandwidth by uploading only those files that changed since the last upload. It keeps track of the uploaded files by storing the commit id in a log file on the server. It uses Git to determine which local files have changed. You can easily deploy another branch or go back in the Git history to upload an older version. git-ftp was not designed as centralized deployment tool. While a commit is being pushed and uploaded to the FTP server, all files belonging to that revision must remain untouched until git-ftp has successfully finished the upload. Otherwise, the contents of the uploaded file will not match the contents of the file referenced in the commit.
    Downloads: 4 This Week
    Last Update:
    See Project
  • 14
    GitButler

    GitButler

    The GitButler version control client, backed by Git

    GitButler is a modern Git-based version control client that pairs a graphical desktop experience with a complementary command-line tool, aiming to make everyday change management easier than traditional Git workflows. It keeps Git compatibility at the core, meaning your work still maps to commits, branches, and pushes to standard Git servers, but it rethinks how you interact with that underlying model. The project is designed around developer productivity, emphasizing smoother workflows for handling multiple streams of work, reviewing changes, and recovering from mistakes without the usual friction. It also positions itself for AI-assisted development patterns, where tooling needs to support rapid iteration and parallel work while staying understandable and reversible. By offering both GUI and CLI surfaces, it can fit into different team preferences, from visual-first change review to scriptable automation.
    Downloads: 4 This Week
    Last Update:
    See Project
  • 15
    Gitmal

    Gitmal

    A static page generator for repos

    Gitmal is a static page generator that turns the contents of a Git repository into a clean, navigable HTML website, making it easier to share or showcase code outside of traditional Git hosting platforms. It reads repository metadata including files, commits, branches, and markdown, and produces a fully static set of pages with syntax-highlighted code, commit history, branch lists, and rendered documentation, so viewers can explore projects as if browsing a lightweight curated site. Designed for simplicity and performance, gitmal can be run locally or via a Docker container, and works across repositories of any size, producing fully self-contained output ready to be deployed to static web hosts. It supports themes and custom styles, allowing creators to personalize the look and feel of the generated site. For developers who want to archive, document, or display their code in a non-interactive context, gitmal provides a straightforward and configurable solution.
    Downloads: 4 This Week
    Last Update:
    See Project
  • 16
    Grgit

    Grgit

    The Groovy way to use Git

    Grgit is a Groovy‑friendly wrapper around Eclipse JGit that simplifies Git operations within Groovy scripts or Gradle builds. It provides a cleaner, fluent API for common Git tasks (clone, commit, tag, branch), and ships as a Gradle plugin for easy project integration.
    Downloads: 4 This Week
    Last Update:
    See Project
  • 17
    Netlify CMS

    Netlify CMS

    A Git-based CMS for static site generators

    Open source content management for your Git workflow. Use Netlify CMS with any static site generator for a faster and more flexible web project. Get the speed, security, and scalability of a static site, while still providing a convenient editing interface for content. Content is stored in your Git repository alongside your code for easier versioning, multi-channel publishing, and the option to handle content updates directly in Git. Netlify CMS is built as a single-page React app. Create custom-styled previews, UI widgets, and editor plugins or add backends to support different Git platform APIs. Getting started is simple and free. Choose a template that’s pre-configured with a static site generator and deploys to a global CDN in one click. You get to implement modern front end tools to deliver a faster, safer, and more scalable site. Editors get a friendly UI and intuitive workflow that meets their content management requirements.
    Downloads: 4 This Week
    Last Update:
    See Project
  • 18
    Onefetch

    Onefetch

    Git repository summary on your terminal

    Onefetch is a command-line Git information tool written in Rust that displays project information and code statistics for a local Git repository directly on your terminal. The tool is completely offline, no network access is required. By default, the repo's information is displayed alongside the dominant language's logo, but you can further configure onefetch to instead use an image, on supported terminals, text input, or nothing at all. It automatically detects open source licenses from texts and provides the user with valuable information like code distribution, pending changes, number of dependencies (by package manager), top contributors (by number of commits), the size on disk, creation date, LOC (lines of code), etc. Onefetch can be configured via command-line flags to display exactly what you want, the way you want it to: you can customize ASCII/Text formatting, disable info lines, ignore files & directories, and output in multiple formats (JSON, Yaml), etc.
    Downloads: 4 This Week
    Last Update:
    See Project
  • 19
    PyGitHub

    PyGitHub

    Typed interactions with the GitHub API v3

    PyGitHub is a Python library to access the GitHub REST API. This library enables you to manage GitHub resources such as repositories, user profiles, and organizations in your Python applications. PyGithub is a Python library to use the Github API v3. With it, you can manage your Github resources (repositories, user profiles, organizations, etc.) from Python scripts. Should you have any question, any remark, or if you find a bug, or if there is something you can do with the API but not with PyGithub, please open an issue.
    Downloads: 4 This Week
    Last Update:
    See Project
  • 20
    QtPass

    QtPass

    QtPass is a multi-platform GUI for pass, the standard unix password

    QtPass is part of the pass ecosystem. This means you are not stuck with QtPass, you can use the same password store with many clients. Password management should be simple and follow Unix philosophy. With pass, each password lives inside of a gpg encrypted file whose filename is the title of the website or resource that requires the password. These encrypted files may be organized into meaningful folder hierarchies, copied from computer to computer, and, in general, manipulated using standard command line file management utilities. Contrary to many Free, Libre and OpenSource password managers, pass and by extension QtPass are not bound to one user or device. Since we are based on GnuPG we have multi-key, multi recipient encryption out of the box. The use of external encryption devices like OpenPGP or x509/CMS based smartcards or USB tokens and per-folder ACL makes it easy to grant or take away privileges from users.
    Downloads: 4 This Week
    Last Update:
    See Project
  • 21
    Talisman

    Talisman

    Talisman validates the outgoing changeset

    Talisman is a tool that installs a hook to your repository to ensure that potential secrets or sensitive information do not leave the developer's workstation. It validates the outgoing changeset for things that look suspicious - such as potential SSH keys, authorization tokens, private keys etc. Talisman can also be used as a repository history scanner to detect secrets that have already been checked in, so that you can take an informed decision to safeguard secrets. We recommend installing Talisman as a pre-commit git hook template, as that will cause Talisman to be present, not only in your existing git repositories, but also in any new repository that you 'init' or 'clone'. Installation of Talisman globally does not clobber pre-existing hooks on repositories. If the installation script finds any existing hooks, it will only indicate so on the console. After the installation is successful, Talisman will run checks for obvious secrets automatically before each commit or push.
    Downloads: 4 This Week
    Last Update:
    See Project
  • 22
    git absorb

    git absorb

    git commit --fixup, but automatic

    This is a port of Facebook's hg absorb. Facebook demoed hg absorb which is probably the coolest workflow enhancement I've seen to version control in years. Essentially, when your working directory has uncommitted changes on top of draft changesets, you can run hg absorb and the uncommitted modifications are automagically folded ("absorbed") into the appropriate draft ancestor changesets. This is essentially doing hg histedit + "roll" actions without having to make a commit or manually make history modification rules. The command essentially looks at the lines that were modified, finds a changeset modifying those lines, and amends that changeset to include your uncommitted changes. If the changes can't be made without conflicts, they remain uncommitted. This workflow is insanely useful for things like applying review feedback. You just make file changes, run hg absorb and the mapping of changes to commits sorts itself out. It is magical.
    Downloads: 4 This Week
    Last Update:
    See Project
  • 23
    git-open

    git-open

    Type `git open` to open the GitHub page or website for a repository

    Type git open to open the repo website (GitHub, GitLab, Bitbucket) in your browser. git open works with these hosted repo providers, git open --issue currently only works with GitHub, Visual Studio Team Services and Team Foundation Server. The preferred way of installation is to simply add the git-open script somewhere into your path (e.g. add the directory to your PATH environment or copy git-open into an existing included path like /usr/local/bin). Antigen will handle cloning the plugin for you automatically the next time you start zsh, and periodically checking for updates to the git repository. You can also add the plugin to a running zsh with antigen bundle paulirish/git-open for testing before adding it to your .zshrc. Add zgen load paulirish/git-open to your .zshrc file in the same function you're doing your other zgen load calls in. ZGen will take care of cloning the repository the next time you run zgen save, and will also periodically check for updates to the git repository.
    Downloads: 4 This Week
    Last Update:
    See Project
  • 24
    github-changelog-generator

    github-changelog-generator

    Automatically generate change log from your tags, issues, labels, etc.

    Automatically generate change log from your tags, issues, labels and pull requests on GitHub. Fully automated changelog generation - This gem generates a changelog file based on tags, issues and merged pull requests (and splits them into separate lists according to labels) from octocat: GitHub. What’s the point of a changelog? To make it easier for users and contributors to see precisely what notable changes have been made between each release (or version) of the project. Why should I care? Because software tools are for people. "Changelogs make it easier for users and contributors to see precisely what notable changes have been made between each release (or version) of the project." Using Docker is an alternative to installing Ruby and the gem.
    Downloads: 4 This Week
    Last Update:
    See Project
  • 25
    nbstripout

    nbstripout

    strip output from Jupyter and IPython notebooks

    Opens a notebook, strips its output, and writes the outputless version to the original file. Useful mainly as a git filter or pre-commit hook for users who don't want to track output in VCS. This does mostly the same thing as the Clear All Output command in the notebook UI. You can download and install the latest version of nbstripout from PyPI, the Python package index. Strip output from IPython / Jupyter / Zeppelin notebook (modifies the file in-place). Usually, nbstripout is installed per repository so you can choose where to use it or not. You can choose to set the attributes in .gitattributes and commit this file to your repository, however there is no way to have git set up the filters automatically when someone clones a repository. This is by design, to prevent you from executing arbitrary and potentially malicious code when cloning a repository.
    Downloads: 4 This Week
    Last Update:
    See Project
MongoDB Logo MongoDB