修复msysGit便携式$ HOME位置

我已经成功地在我的闪存驱动器上安装并configuration了msysGit Portable,并用它来拉和推GitHub仓库。 不过,我似乎总是要欺骗SSH的支持。

具体来说,为了让SSHfind我的密钥文件,我必须按照这些指示来启动ssh-agent的第二个实例,然后ssh-add每次运行git-bash.bat时ssh-add我的密钥。

使用ssh -v git@github.com的输出进行debugging,我发现msysGit默认为我的Windows用户目录来查找密钥。 它不能这样做; 我需要它在便携式驱动器上查找自己的目录。

我如何强制$ HOME成为程序自己的文件夹?

更新破坏的Vox链接

此页面上的说明与我最初发布的现在已断开的链接类似。 引用如下。 另外这里是原始Vox文章的网页存档 。

但是,如果您尝试此操作并获得:

 % ssh-add Could not open a connection to your authentication agent. 

那么你的会话不在ssh-agent下运行。 您可以通过运行以下代码重新启动代理下的新shell:

 exec ssh-agent bash 

在那里你可以用你select的shellreplacebash。 一旦你这样做了,你应该可以运行ssh-add来加载你的密钥。

用来启动git bash的命令是:

 C:\Windows\SysWOW64\cmd.exe /c ""C:\Prog\Git\1.7.1\bin\sh.exe" --login -i" 

我只是在DOS会话中尝试了以下内容:

 C:\>C:\Windows\SysWOW64\cmd.exe /c ""C:\Prog\Git\1.7.1\bin\sh.exe" --login -i" VonC@XXX /c/ $ echo $HOME /c/Users/VonC 

默认情况下,$ HOME $%HOMEPATH%,但如果我强制%HOME%:

 set HOME=/another/path 

然后启动相同的bash会话:

 C:\>C:\Windows\SysWOW64\cmd.exe /c ""C:\Prog\Git\1.7.1\bin\sh.exe" --login -i" VonC@XXX /c/ $ echo $HOME /another/path 

所以,如果你通过设置HOME的脚本包装bash调用:

  • %~dp0 :USB密钥包装的path
  • %~d1\your\path%~d1是驱动器盘符(如果你的包装器是在你的盘符上的话)

,你应该能够强制家庭无论你需要什么值。


注意(2011年11月):从那以后, OP dgw写了他自己的包装 :

git-bash-portable.bat

 @echo off rem Copyright (C): 2010 Voyagerfan5761 rem http://technobabbl.es/ set USERPROFILE=%~dp0 set HOMEDRIVE=%~d0 set HOMEPATH=%~p0 set HOME=%~dp0 set HISTFILE=%USERPROFILE%.bash_history rem set BASHRC=%USERPROFILE%.bashrc git-bash.bat 

文章“ 用于Windows的便携式Git:设置$HOME环境variables以允许完整的可移植性(包括用于GitHub的SSL密钥和configuration) ”也增加了有用的信息。

但是,如果您将Git安装在便携式驱动器上,则需要将设置与安装一起传输 – 显然如果在其他计算机上可能不存在的文件夹中查找它们,则显然不会。

所以,我们需要做的是告诉便携式Git把自己的文件夹中的特定位置作为主文件夹; 这样我们就可以将整个Git文件夹复制到任何我们喜欢的位置,设置将随之移动。