如何向Git Bash添加更多命令?


63

我在Windows机器上工作,并且使用Git附带的bash shell。但是在此版本的bash shell中缺少许多实用程序。

如何在此Shell上安装更多命令?


3
你尝试了什么?
030

3
many utilities are missing in this version of bash shell。请添加您要使用的缺少的命令。
030

3
有关使用默认不包含的实用程序的最新,更简便的方法,请参阅serverfault.com/a/872557/212162
nextgentech

Answers:


16

您可能会使用两种版本的Git- msysgit发行版或Cygwin

为Cygwin安装其他实用程序

尽管您可能只在安装Cygwin的过程中安装了Git(如果使用的是Cygwin),但是Cygwin有一个名为setup.exe的程序,可用于添加软件包。本质上,您所要做的就是运行setup.exe并选择进入“ 选择软件包”窗口时想要安装的程序此处的简介很好地概述了详细描述过程的图像。

Cygwin的安装程序非常聪明,可以确定您已经存在一个安装程序,它将为您的安装程序添加软件包(而不是取消安装并重新开始)。

系统

您可能正在使用的Git的另一个版本(如果不是Cygwin)是msysgit。由于msysgit安装了一个与MinGW真正不兼容的最小Unix环境,因此最终您将不得不在msysgit旁边安装MinGW套件。MinGW 入门页面详细介绍了如何安装MinGW-由于我个人没有使用MinGW的经验,因此我真正能做的就是向他们提供指导。

然后,您必须将msysgit安装迁移到MinGW。这可以通过执行以下操作(从此处获取)来完成。完成以下顺序后,MinGW应该找到您的Git安装。

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
对于任何想知道的人,请不要尝试在msysgit软件包上使用cygwin安装程序。它可以部分工作...但是在解决依赖关系时,它将替换sh.exe(这将大大改变您的环境)。
克里斯·贝蒂

5
我怎么知道我的git-bash使用cygwin还是msys?
lmo

7
我从git-scm.com/download/win安装的是msysgit还是cygwin?编辑想通了。我不会删除此评论,而是说它是msysgit。
有限赎罪

3
@LimitedAtonement-对于其他问过同样问题的读者(如我自己),也请说出您的想法。
Ioanna

4
您可以通过uname -o在bash终端中运行来判断安装了什么。
悬崖阿姆斯特朗

5

使用最新的Windows Git安装程序,安装其他Shell脚本和程序非常容易。

我建议您使用Chocolatey 安装git choco install git,因为您可以通过执行来更新git(以及随Chocolatey安装的所有其他工具)choco upgrade all

只需将可执行文件放入C:\Program Files\Git\usr\bin%ProgramFiles%\Git\usr\bin)。

git-fresh示例

将文件git-fresh复制到C:\Program Files\Git\usr\bin

ADR工具示例

  1. 发布页面下载一个zip软件包
  2. 解压包装
  3. 将所有内容复制src/C:\Program Files\Git\usr\bin

4

如果您使用的是msysgit,一个简单的选择是仅安装MinGW,然后将MINGW路径添加到用于Git安装的.bashrc文件中:

    PATH=$PATH:/MINGW/msys/1.0/bin

...安装MINGW的位置是MINGW

这样,您可以直接从Git bash安装中使用MinGW工具,如果您需要其他bash工具,则可以将其安装到MinGW。


1

您可以Wget, Hugo, Xpdf, make, Nano从此处下载其他Unix统一性:https://gist.github.com/evanwill/0207876c3243bbb6863e65ec5dc3f058

Wget

  • 永恒下载Windows的最新wget二进制文件(它们可作为带有文档的zip或仅作为exe文件使用)
  • 如果下载了zip,请解压缩所有文件(如果zip实用程序内置的Windows错误,请使用7-zip)。
  • 重命名文件wget64.exe,以wget.exe在必要时。
  • 移至wget.exe您的Git\mingw64\bin\

注意:在Git Bash上使用Wget创建WARC文件时,我注意到了一些错误。要更复杂地使用Wget,请考虑使用Cygwin

雨果

雨果静态网站生成器可以二进制格式下载,没有安装程序。bin轻松将其放入您的Git Bash路径中。从发行页面中获取Windows 64位版本。解压缩下载文件,然后复制hugo.exe到您的Git\mingw64\bin目录中。

Xpdf格式

Xpdf是用于处理PDF文件的便捷实用程序。

  • 下载Windows版本“ Xpdf工具”
  • 解压缩。
  • 将中的内容复制xpdf-tools-win-4.00\bin64\到您的中Git\mingw64\bin\
  • 检查文档以开始使用诸如pdftotext和的工具pdftopng

使

  • 转到ezwinports
  • 下载make-4.1-2-without-guile-w32-bin.zip(获取不带古怪的版本)。
  • 解压缩。
  • 将内容复制到Git\mingw64\合并文件夹中,但不要覆盖/替换任何现有文件。

奈米

截至2018年,最新版本的Git Bash包括Nano,因此这是不必要的!

  • 从Nano win32支持页面下载Nano二进制文件。您只需要.exe命名该文件nano-git-0d9a7347243.exe(在撰写本文时)。
  • 将文件重命名为nano.exe,然后复制到mingw64\bin目录。
  • 这种纳米版本不会使用Git猛砸单独工作,但可以通过调用winpty,例如winpty nano test.txt

1

我今天找到了一个非常简单的答案,该答案适用于rsync

  1. 为Windows安装git bash
  2. rsyncfutureware.at下载*
  3. 提取到任何地方,我选择 C:\rsync-3.1.2-2-x86_64.pkg
  4. bin文件夹添加到系统路径的顶部

*我不知道futureware.at的背后是谁,我希望链接到更主要的资源。


@mike你的答案是相似的,除了我没有安装cygwin64
geneorama

1

我尝试了以下操作,并将emacs安装到了git-bash上。1.将msys2安装在某个地方(不必是同一台计算机)。2.在msys2下,运行以下命令:

   cd /tmp
    mkdir -p var/lib
    cp -R /var/lib/pacman var/lib/
    pacman -Sr /tmp emacs
    tar zcf emacs.tar.gz usr
  1. 复制emacs.tar.gz到可以从git-bash访问的位置,然后在git-bash下:

    tar zxf emacs.tar.gz -C / emacs

就这样,祝您好运。

第一篇文章发表后,我尝试了另一台计算机,但无法正常工作。事实证明,git-bash中缺少某些dll。然后,我按照以下步骤在干净的虚拟机中进行了测试:

  1. 安装msys2-x86_64-20180531Git-2.19.1-64-bit

  2. 更新msys2,打开msys64控制台并运行:

    pacman -Syyu
    

    出现提示时,关闭msys64控制台,然后再次运行上述命令。

  3. 按照前面的步骤获取emacs文件(在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:我曾经在/ d / tmp而不是/ tmp中尝试了上述步骤,但无法将emacs安装到它。

  4. 打开git-bash并解压缩emacs文件:

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

    它将抱怨缺少共享库“?” 现在尝试运行emacs。“?” 不会透露给任何可读性

  5. 返回msys64并获取msys2 dll:

    ls --color=never /bin/*.dll > /c/tmp/1.txt
    
  6. 在git-bash中将dll与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
    

    就我而言,diff_dlls.txt中有26个dll。

  7. 将dll从msys64复制到git-bash:

    在msys64中:

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

    在git-bash中:

    cp /c/tmp/dlls/* /bin
    
  8. 全部完成,现在emacs在git-bash中运行。这26个dll中的某些可能不是必需的,但我希望节省时间而不是磁盘空间。


0

如果在Windows(MinGW64)上使用Git bash,我很难将rsync添加到其中。不断出错:dup()in / out / err失败

相反,最终使用Cygwin起作用了。

我在Windows的Gitbash中使用rysnc的步骤

  1. 为Windows安装gitbash
  2. 安装cygwin64
  3. 将cygwin路径添加到Windows路径变量

    Windows->系统->高级设置->环境变量

    为C:\ cygwin64 \ bin \添加路径

  4. 关闭并重新打开gitbash现在gitbash将在cygwin \ bin中找到rsync.exe
  5. 我收到cygwin1.dll的不兼容版本错误

    ***致命错误-检测到cygheap基本不匹配

  6. 尽管有人说重新启动可以解决此问题,但事实并非如此。
  7. 要解决版本错误,我从cygwin的较旧版本复制了cygwin \ bin目录-1.7.30版有效

不要这样 有关原因,请参见在git bash脚本中使用cygwin可执行文件
MikeJRamsey18年

0

可以通过创建脚本来扩展git-bash中功能的数量,并通过在~/.bash_profile文件中定义它们来调用它们。

如果要使用该watch命令,则可以将此脚本添加到~/.bash_profile

https://gist.github.com/espaciomore/28e24ce4f91177c0964f4f67bb5c5fda

ARGS="${@}"
clear;
while(true); do
  OUTPUT=`$ARGS`
  clear
  echo -e "${OUTPUT[@]}"
done

并将其包装在一个函数中:

watch() {
  ARGS="${@}"
  clear;
  while(true); do
    OUTPUT=`$ARGS`
    clear
    echo -e "${OUTPUT[@]}"
  done
}

一旦保存并运行该文件,source ~/.bash_profile便应该能够监视命令的输出。



-1

加上 rsync

您可以直接从mysys下载rsync文件。只需在页面上搜索rsync,然后选择具有最新日期/最新版本号的页面即可。通过
以下文件解压缩该文件(rsync-3.1.3-1-x86_64.pkg.tar.xz

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

然后在复制rsync ./usr/bin/rsync.exe 并将其粘贴到Git安装的/ usr / bin文件夹中。
在我的机器上C:/Program Files/Git/usr/bin/

您可以通过以下方式查看Git安装的位置

where git

这是hisplan的摘要存储区,其中包含说明以及指向rsync https://gist.github.com/hisplan/ee54e48f17b92c6609ac16f83073dde6上的3.1.3-1版本的链接 。

注意:rsync-3.1.3-1-x86_64.pkg.tar.xz由于权限不允许,我无法将文件直接解压缩到Git文件夹中。而且Git Bash没有sudo。
但是我可以将其直接解压缩到我的下载文件夹中,没有问题。
同样,因为您只需要该rsync.exe文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.