I am working on windows machine and I use bash shell which comes with Git. But there are many utilities which are missing in this version of bash shell.

How can I install more commands on this shell?

  • 4
    What did you try?
    – 030
    Jul 22, 2018 at 13:47
  • 3
    many utilities are missing in this version of bash shell. Please add what commands are missing that you would like to use.
    – 030
    Jul 22, 2018 at 13:48
  • 3
    See serverfault.com/a/872557/212162 for a much more recent and easier way of using utilities that aren't included by default. Jul 22, 2018 at 20:51

12 Answers 12


There are two versions of Git that you are likely to be using - the msysgit distribution or Cygwin.

Installing Additional Utilities For Cygwin

Although you might have only installed Git as a part of your Cygwin install (if you used Cygwin), Cygwin has a program called setup.exe which you can use to add packages. Essentially, all you have to do is run setup.exe and pick out what programs you want installed when you get to the Select Packages window. The introduction here provides a good overview with images that detail the process.

Cygwin's installer is smart enough to figure out that you have a preexisting installation, and it will add packages to your installation (instead of nuking it and starting over).


The other version of Git you are probably using (if not Cygwin) is msysgit. Because msysgit installs a minimal Unix environment which is not really compatible with MinGW, you'll end up having to install the MinGW suite beside msysgit. The MinGW Getting Started page gives a detailed overview on how to go about getting MinGW installed - since I have no experience with MinGW personally, all I can really do is refer you to their instructions.

You'll then have to migrate your msysgit installation into MinGW. This can be accomplished by doing the following (taken from here). After the following sequence is done, MinGW should find your Git installation.

cd GITDIR # Where GITDIR is wherever inside Program Files you put Git
cp bin/git* /MINGW/bin # Where MINGW is wherever you put MinGW
cp -r libexec/git* /MINGW/libexec
cp -r share/git* /MINGW/share
  • 2
    For anyone wondering, do not try to use the cygwin installer on the msysgit package. It partially works... but while resolving dependencies, it will replace sh.exe (which changes your environment significantly). Jan 16, 2015 at 15:10
  • 10
    How do I know if my git-bash use cygwin or msys ?
    – lmo
    Jul 22, 2016 at 8:49
  • 12
    I installed from git-scm.com/download/win is that msysgit or cygwin? EDIT Figured it out. Rather than delete this comment, I'll say that it's msysgit. Aug 19, 2016 at 13:26
  • 4
    @LimitedAtonement - Please also say how you figured it out, for other readers (like myself) who have asked themselves the same question.
    – Ioanna
    Sep 12, 2016 at 11:11
  • 21
    You can tell what you have installed by running uname -o in the bash terminal. Feb 18, 2019 at 23:53

With recent Git for Windows installations, installing additional shell scripts and programs is pretty easy.

Simply put the executables into C:\Program Files\Git\usr\bin (%ProgramFiles%\Git\usr\bin).

I recommend installing git using chocolatey choco install git --params "/GitAndUnixToolsOnPath /WindowsTerminal", because you can update git (and all other tools installed with chocolatey) by executing choco upgrade all.

Example for git-fresh

Copy the file git-fresh to C:\Program Files\Git\usr\bin.

Example for adr-tools

  1. Download a zip package from the releases page
  2. Unzip the package
  3. Copy everything from src/ into C:\Program Files\Git\usr\bin
  • 1
    This is awesome. Didn't realize that chocolately is basically the package manager. Mar 5, 2020 at 8:11
  • W11, MSysGit version of Git Bash. Folder was in %UserProfile%/AppData/Local/Programs/Git aka %LocalAppData%/Programs/Git.
    – l3l_aze
    Dec 7, 2023 at 6:50

to add rsync

You can download the rsync file directly from mysys. Just search the page for rsync and choose the one with the latest date / latest version number.
Unpack this file (e.g. rsync-3.1.3-1-x86_64.pkg.tar.xz) via

tar -xf rsync-3.1.3-1-x86_64.pkg.tar.xz

Then copy rsync at ./usr/bin/rsync.exe and paste it into the /usr/bin folder of your Git installation.
On my machine, that is C:/Program Files/Git/usr/bin/

You can see the location of your Git installation via

where git

Here is a GitHub gist by "hisplan" (Jaeyoung Chun) that has instructions along with a link to the 3.1.3-1 version of rsync: add-rsync-to-git-bash.

Note: I could not unpack the rsync-3.1.3-1-x86_64.pkg.tar.xz file directly into the Git folder, because permissions did not allow it. And Git Bash does not have sudo.
But I could unpack it directly into my Downloads folder no problem.
It's just as well, because you only need the rsync.exe file anyway.


If you are using msysgit a simple option is to just install MinGW and then add the MINGW path to the .bashrc file you are using for your Git installation:


...where MINGW is where you installed MinGW

That way you can use the MinGW tools directly from your Git bash installation, and if you need another bash tool you can just install it to MinGW.


You can download additional Unix unitities Wget, Hugo, Xpdf, make, Nano from here: https://gist.github.com/evanwill/0207876c3243bbb6863e65ec5dc3f058


  • Download the lastest wget binary for windows from eternallybored (they are available as a zip with documentation, or just an exe)
  • If you downloaded the zip, extract all (if windows built in zip utility gives an error, use 7-zip).
  • Rename the file wget64.exe to wget.exe if necessary.
  • Move wget.exe to your Git\mingw64\bin\.

Note: I have noticed some bugs when using Wget on Git Bash to create WARC files. For more complex use of Wget, consider Cygwin instead.


Hugo static site generator can be downloaded as a binary and does not have a installer. Dropping it into your bin easily adds it to your Git Bash path. Grab the Windows 64-bit version from the releases page. Unzip the download, then copy hugo.exe into your Git\mingw64\bin directory.


Xpdf is a handy utility for manipulating PDF files.

  • Download the windows version "Xpdf tools".
  • Extract zip.
  • Copy the contents of xpdf-tools-win-4.00\bin64\ into your Git\mingw64\bin\.
  • Check the docs to get started with tools such as pdftotext and pdftopng.


  • Go to ezwinports.
  • Download make-4.1-2-without-guile-w32-bin.zip (get the version without guile).
  • Extract zip.
  • Copy the contents to your Git\mingw64\ merging the folders, but do NOT overwrite/replace any existing files.


As of 2018, recent versions of Git Bash include Nano, so this is unnecessary!

  • Download the Nano binary from Nano win32-support page. You just need the .exe file, which is named nano-git-0d9a7347243.exe (as of this writing).
  • Rename the file to nano.exe, and copy to the mingw64\bin directory.
  • This version of Nano will not work with Git Bash alone, but can be invoked using winpty, for example, winpty nano test.txt.

install "Git for Windows SDK" (scroll to the bottom of https://gitforwindows.org/ which provides a link to download installer for it from https://github.com/git-for-windows/build-extra/releases/latest)



I found a pretty simple answer today that worked for rsync.

  1. Install git bash for Windows
  2. Download rsync from futureware.at*
  3. Extract to anywhere, I choose C:\rsync-3.1.2-2-x86_64.pkg
  4. Add the bin folder to the top of your system path

* I do not know who is behind futureware.at, I would prefer to link to a more primary source.

  • @mike your answer is similar, except that I didn't install cygwin64
    – geneorama
    Dec 6, 2018 at 19:10

I tried the following and installed emacs to git-bash.. 1. Install msys2 somewhere(does not have to be same computer). 2. Under msys2, run the following:

   cd /tmp
    mkdir -p var/lib
    cp -R /var/lib/pacman var/lib/
    pacman -Sr /tmp emacs
    tar zcf emacs.tar.gz usr
  1. Copy emacs.tar.gz to where you can access from git-bash, then under git-bash:

    tar zxf emacs.tar.gz -C / emacs

That's all, good luck.

After the first post, I tried an other computer but not working. It turns out that some dlls is missing in git-bash. Then I tested in a clean virtual machine with the following steps:

  1. Install msys2-x86_64-20180531 and Git-2.19.1-64-bit.

  2. Update msys2, open msys64 console and run:

    pacman -Syyu

    Close msys64 console when prompted, then run the above command again.

  3. Get emacs files as the previous steps(run the following in msys64):

    cd /tmp
    mkdir -p var/lib
    cp -R /var/lib/pacman var/lib/
    pacman -Sr /tmp emacs
    tar zcf emacs.tar.gz usr
    mv emacs.tar.gz /c/tmp

    ps: I once tried the above steps in /d/tmp instead of /tmp and was not able to install emacs to it.

  4. Open git-bash and extract emacs files:

    cd /c/tmp
    tar zxf emacs.tar.gz -C /

    It will complain missing shared library "?" on trying to run emacs now. The "?" will not revealed to any readable

  5. Go back to msys64 and get the msys2 dlls's:

    ls --color=never /bin/*.dll > /c/tmp/1.txt
  6. In git-bash compare dlls with msys:

    cd /c/tmp
    git init
    git add 1.txt && git commit
    ls --color=never /bin/*.dll | sed 's#\*$##g' > /c/tmp/1.txt
    git diff 1.txt | grep '^-' | sed '1d' | sed 's#^-/bin/##g' > diff_dlls.txt

    In my case, there are 26 dlls in diff_dlls.txt.

  7. Copy the dlls from msys64 to git-bash:

    In msys64:

    mkdir /c/tmp/dlls
    cat /c/tmp/diff_dlls.txt | xargs -I {} cp /bin/{} /c/tmp/dlls

    In git-bash:

    cp /c/tmp/dlls/* /bin
  8. All done, now emacs runs in git-bash. Some of the 26 dlls may not be necessary, but I'd prefer to save my time instead of disk space.


If using Git bash for Windows (MinGW64), I had a very hard time getting rsync to be added to it. kept getting error: dup() in/out/err failed

Instead, using Cygwin worked eventually.

Steps I took to use rysnc in Gitbash for Windows

  1. Install gitbash for windows
  2. Install cygwin64
  3. Add the cygwin path to the Windows path variable

    Windows-> System->advanced Setings->Environment Variables

    Add a path for C:\cygwin64\bin\

  4. Close and re-open gitbash Now gitbash will find the rsync.exe in the cygwin\bin
  5. I was getting an incompatible version error for cygwin1.dll

    *** fatal error - cygheap base mismatch detected

  6. Although some said a reboot will fix this, it did not.
  7. To resolve the version error, I copied the cygwin\bin directory from an older version of cygwin - version 1.7.30 worked

One could extend the number of features in git-bash by creating scripts and call them by defining them in the ~/.bash_profile file.


If one would like to use the watch command, then this script could be added to the ~/.bash_profile:


while(true); do
  echo -e "${OUTPUT[@]}"

and wrap it inside a function:

watch() {
  while(true); do
    echo -e "${OUTPUT[@]}"

As soon as one saves the file and runs source ~/.bash_profile then one should be able to watch the output of commands.


The above instructions are slightly outdated. Here is what recently worked for me. Use linux to download and extract necessary files:

sudo apt-get install zstd  # download unpack tool

# get rsync and necessary libraries
wget http://repo.msys2.org/msys/x86_64/rsync-3.2.2-1-x86_64.pkg.tar.zst
wget http://repo.msys2.org/msys/x86_64/libzstd-1.5.0-1-x86_64.pkg.tar.zst
wget http://repo.msys2.org/msys/x86_64/libxxhash-0.7.4-1-x86_64.pkg.tar.zst

# unpack
tar -I zstd -xvf rsync-3.2.2-1-x86_64.pkg.tar.zst
tar -I zstd -xvf libzstd-1.5.0-1-x86_64.pkg.tar.zst
tar -I zstd -xvf libxxhash-0.7.4-1-x86_64.pkg.tar.zst

now copy everything to Windows... for example MinGW/bin or Git/usr as explained above


To get rsync for Windows 10, this guide the only one worked for me

Steps in summary:

  1. Download “mingw-get-setup.exe” from the MinGW SourceForge Project Site (http://sourceforge.net/projects/mingw/files/Installer/).

  2. Run the “mingw-get-setup.exe” and click the “Install” button. Then, navigate the left side options and select “MSYS”. Then locate and select only the “msys-rsync” bin package. Then, from the "Installation" drop down menu select “Apply Changes”.

  3. Copy the following four files from the MinGW msys bin folder “C:\MinGW\msys\1.0\bin” to the Git bin folder “C:\Program Files (x86)\Git\bin”


then in Git Bash, run the following 2 commands:

echo '/c/MinGW/msys/1.0/bin/rsync "$@"' >/usr/bin/rsync
chmod +x /usr/bin/rsync

in Git Bash, run below command to check rsync is working:

rsync --version
  1. (Optional) Delete entire C:/MinGW folder

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .