如何在Cygwin中获得Git 1.8?

根据http://cygwin.com/packages/git/最新可用的Cygwin包是1.7.9-1。

我想更新git至less1.8.0。

我可以这样做吗?

要安装git 1.8.0你需要编译源代码。

您需要克隆git仓库( git clone https://github.com/git/git.git ),进入git目录,将当前版本更改为1.8.0或其他您想要的版本( git checkout v.1.8.0 )并input以下命令:

 make configure ./configure --prefix=/usr/local make make install 

它会在/usr/local目录下安装git。 有关git安装的更多信息,比如文档,你可以看看git仓库根目录中的INSTALL文件。

cygwinports有许多新版本的各种工具

当时我写这个有1.8.3.4

新的,简化的安装说明:

  • 使用最新的Cygwin安装程序(至less2.829版):setup-x86.exe(32位)或setup-x86_64.exe(64位)。 (请注意,许多软件包尚未移植到x86_64。)
  • 启动设置 – *。exe与-K标志,例如:

    cygstart – /path/to/setup-x86.exe -K http://cygwinports.org/ports.gpg

  • 在select安装types页面上,select“从Internet安装”。

  • 在select下载站点页面上,select一个distro镜像,然后在用户URL字段中inputftp://ftp.cygwinports.org/pub/cygwinports ,然后按添加(确保两者均高亮显示)。
    1. 或者,您可以使用Sourceware镜像,但是如果这样做,则必须使用托pipe在与选定的Distro镜像不同的服务器上的托pipe镜像。
  • 继续进行软件包select和安装,确保安装任何指定的依赖项。

我按照以下说明成功安装了git 1.8.4.474; 我正在运行Windows 7 64位,cygwin版本1.7.22(0.268 / 5/3)

  1. 运行Cygwin安装程序并确保安装了以下软件包:

     gcc autoconf curl libcurl-devel, required for http/https support (NOTE: this is an obsolete package, you will need to uncheck "Hide obsolete packages" when selecting packages to install) make libiconv python perl gettext 

    您可能需要libiconv-devel和cygwin32-liviconv(请参阅Marek的评论)

  2. 用git克隆https://github.com/git/git.git克隆Git源码。; 关于Gitconfiguration的一些注意事项:

    确保core.autocrlf=false ,否则最终会导致DOS样式行结束导致构build中断。

    我也有一个http.sslcainfo属性值; 要么取消设置,要么将其指向/usr/ssl/certs/ca-bundle.crt

  3. 从你新克隆的git仓库中,运行以下命令:

     make configure ./configure make make install 

你的指示并没有真正为我工作…

我遵循这些说明(只要确保安装了所有正确的软件包)

http://randomartifacts.blogspot.com/2013/04/compiling-git-on-cygwin.html

修改了Makefile

 $ git diff Makefile diff --git a/Makefile b/Makefile index 3588ca1..90f337c 100644 --- a/Makefile +++ b/Makefile @@ -407,7 +407,7 @@ RPMBUILD = rpmbuild TCL_PATH = tclsh TCLTK_PATH = wish XGETTEXT = xgettext -MSGFMT = msgfmt +MSGFMT = msgfmt.py PTHREAD_LIBS = -lpthread PTHREAD_CFLAGS = GCOV = gcov 

然后

 make configure NO_MSGFMT_EXTENDED_OPTIONS=1 ./configure make NO_MSGFMT_EXTENDED_OPTIONS=1 make install NO_MSGFMT_EXTENDED_OPTIONS=1 

不知道是否所有的make命令都需要param,但这对我有效

我在做“安装”时遇到了问题。 错误消息是:

安装-d -m 755'/ usr / local / bin'
git:'安装'不是一个git命令。 见'git –help'。
./install:第4行:通常:找不到命令
./install:第5行:will:command not found
./install:第6行:到:命令未find
./install:第8行:找不到$:命令
./install:第11行:意外标记附近的语法错误.'
./install: line 11:
.'
./install: line 11:
.'
./install: line 11:
当然,前缀= / usr / local)。 就像任何程序套件一样“

这是由于Windows操作系统不区分大小写,如果您的PATH中包含“./”。 Cygwin使用git源代码树中的INSTALL文件而不是/ usr / bin / install。 我们必须将源树中的一些“INSTALL”文件重命名为其他文件名。 这是由http://zengrong.net/post/1817.htm提到的;

我有一个问题,这使我花了一个小时去debugging,所以发布一个答案,以防其他人来这里看。

事实上这跟Yorkwar的原因是一样的,但是不同的错误。

一切正常,直到make install输出:

 $ make install GEN perl/PM.stamp SUBDIR gitweb SUBDIR ../ make[2]: 'GIT-VERSION-FILE' is up to date. GEN git-instaweb BUILTIN all SUBDIR git-gui SUBDIR gitk-git SUBDIR perl SUBDIR templates install -d -m 755 '/usr/local/bin' make: execvp: install: Permission denied Makefile:2342: recipe for target 'install' failed make: *** [install] Error 127 

在使用UAC,setuid,icacls,所有权等方法之后,我通过strace发现了一个实际的问题,那就是在执行install :因为我的PATH./ ,而Windows不区分大小写,它会尝试执行INSTALL ,这是一个没有设置x位的文本文件。 所以“权限被拒绝”是指这个文件没有设置x

@Yorkwar通过重命名所有INSTALL文件来解决这个问题,然而另一个select是编辑Makefile并replace

 INSTALL = install 

 INSTALL = /usr/bin/install 

我在Windows 7 64位(cygwin64出来之前安装它,并没有打扰升级)使用cygwin 32位。 成功构build并安装git version 2.0.0.rc4.dirty ,这是git clone https://github.com/git/git.git的结果。

您可以从git-scm.com/download/win安装Windows平台的最新版本。

将以下内容添加到~/.profile

 export PATH=$PATH:`cygpath 'C:\Program Files (x86)\Git\bin'` 

我将SourceTree和cygwin这个git客户端与Gerrit / SSH服务器结合使用,并没有遇到任何问题。