修复 msysGit Portable $HOME 位置

2023-12-05

我已在闪存驱动器上成功安装并配置了 msysGit Portable,并使用它来拉取和推送 GitHub 存储库。然而,我似乎总是不得不拼凑 SSH 支持。

具体来说,为了让 SSH 找到我的密钥文件,我必须遵循这些说明启动第二个实例ssh-agent进而ssh-add我每次运行 git-bash.bat 时的密钥。

使用输出ssh -v [email protected]调试时我看到 msysGit 默认在我的 Windows 用户目录中查找密钥。它不能那样做;我需要它在便携式驱动器上自己的目录中查找。

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

更新损坏的 Vox 链接

指示来自这一页类似于我最初发布的现已损坏的链接。引用如下。还有这里的Vox 原始文章的网络存档.

但是,如果您尝试这样做并得到:

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

那么您的会话没有在 ssh-agent 下运行。您可以通过运行以下命令在代理下重新启动新 shell 来解决此问题:

exec ssh-agent bash 

您可以在其中将 bash 替换为您选择的 shell。完成此操作后,您应该能够运行 ssh-add 来加载该 shell 的密钥。


用于启动 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

因此,如果您通过脚本将 bash 调用包装起来,将 HOME 设置为:

  • %~dp0:USB 闪存盘上包装程序的路径
  • or %~d1\your\path: with %~d1是驱动器号(如果您的包装器位于 USB 密钥上)

,您应该能够将 HOME 强制设置为您需要的任何值。


注(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允许完全可移植性的环境变量(包括用于 GitHub 的 SSL 密钥和配置)”还添加有用的信息。

但是,如果您将 Git 安装在便携式驱动器上,您将希望您的设置随安装一起移动 - 如果它在其他计算机上可能不存在的文件夹中查找它们,显然它们不会这样做。

因此,我们需要做的是告诉 Portable Git 将其自己文件夹中的特定位置视为主文件夹;这样我们就可以将整个 Git 文件夹复制到任何我们喜欢的地方,并且设置也会随之移动。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

修复 msysGit Portable $HOME 位置 的相关文章

  • 合并之间的 git rebase 会导致完全不相关的文件发生冲突

    我有一个大型 Git 存储库 几个月前引入了一个错误 我想bisect它 首先引入一个过去的提交 存储库 然后重播合并 做rebase到新的 commit 如下图所示 据我了解 由于合并 Git 似乎无法正常工作 预期的 但我想更好地了解为
  • SSH IdentitiesOnly=yes 转发我的所有密钥

    我一生都无法弄清楚为什么我的 SSH 配置转发了错误的密钥 我有两把钥匙 我们会打电话给他们home rsa and work rsa 我做了以下事情 eval ssh agent ssh add K ssh home rsa ssh ad
  • 如何将普通的 Git 存储库转换为裸存储库?

    如何将 普通 Git 存储库转换为裸存储库 主要区别似乎是 在普通的 Git 存储库中 你有一个 git存储库内的文件夹 包含构成工作副本的所有相关数据和所有其他文件 在裸露的 Git 存储库中 没有工作副本和文件夹 我们称之为repo g
  • 当出现错误时如何删除远程分支?

    我尝试过以下命令 但失败了 git push origin next remote error denying ref deletion for refs heads next To blah git remote rejected nex
  • git Branch -d :致命 - 无法查找 HEAD 的提交对象

    假设我在一个裸存储库 远程 中 如果我尝试使用以下命令删除分支git branch d
  • Eclipse 与外部 src 和 Web 内容文件夹链接或映射

    首先这不是问题但是我遇到的问题的解决方案浪费了4 5个小时来找到解决方案 请让我知道是否有更好的替代方法来使用 eclipse 项目管理外部 src 文件夹 我正在使用版本控制系统 GIT 来管理我的项目 还使用外部 Git 客户端 Sou
  • gitlab 上的权限被拒绝(公钥)

    我的问题是我无法从 GitLab 推送或获取 不过 我可以克隆 通过 HTTP 或通过 SSH 当我尝试推送时出现此错误 权限被拒绝 公钥 致命 无法从远程存储库读取 从我看过的所有线程中 这是我所做的 在我的计算机上设置 SSH 密钥并将
  • git checkout 到分支需要很长时间

    我使用的是 Ubuntu 17 10 并且使用 git 版本 2 14 1 每当我从 master 创建一个分支并尝试签出它 或从它签出到 master 时 都会花费大量时间 大约几分钟 有时接近 10 分钟 确实 我有几 GB 的数据 但
  • 无法从我的电脑上使用 traefik 后面的 gitlab 进行 git 克隆

    这是我的 gitlab 和 traefik 配置 version 3 7 services gitlab web image gitlab gitlab ce latest restart always hostname gitlab ro
  • SSH,运行进程然后忽略输出

    我有一个命令可以使用 SSH 并在 SSH 后运行脚本 该脚本运行一个二进制文件 脚本完成后 我可以输入任意键 本地终端将恢复到正常状态 但是 由于该进程仍在我通过 SSH 连接的计算机中运行 因此任何时候它都会登录到stdout我在本地终
  • 如何将 GIT 调用的输出获取到批处理脚本中的变量中?

    我有一个 git 命令来获取当前存储库的最新 SHA 如下所示 git log pretty format H n 1 我有一个 Windows 批处理脚本 我想按如下方式使用它 SET CURRENT SHA 但我不知道如何将从 git
  • 未能将一些参考推送至 [email protected]

    当我尝试推送到 Heroku 存储库时收到此错误 我已经设置了autocrlf false在gitconfig中 但这个问题仍然存在 我也尝试过这个解决方案here https stackoverflow com questions 566
  • Git post-receive - 如何检查推送的分支是否与主分支合并

    在我们的团队中 我们通常将所有任务推送到单独的分支中 然后发布经理审查这些分支并将它们合并到 主 分支中 有时团队成员忘记将他们的分支与主分支合并 在推送之前 所以我想做的是 在用户推送后输出一条消息 请与主分支合并 我想我需要检查一些内容
  • 如何使用受密码保护的私有 ssh 密钥连接 MySQL Workbench?

    我在使用受密码保护的密钥通过 SSH 连接工作台时遇到问题 我不知道必须将密码密钥放在工作台中的何处 它告诉我 无 拒绝访问 可以继续的身份验证 公钥 我的凭据正确 我可以使用同一用户通过终端 SSH 连接 所以这让我认为这是因为我的 ss
  • 您的分支比“origin/master”领先 3 个提交

    我在运行时收到以下信息git status Your branch is ahead of origin master by 3 commits 我读过其他一些帖子 解决这个问题的方法是运行git pull rebase但是 rebase
  • 如何生成类似github的影响图?

    是否有一些程序 或者我错过的一些神奇的 git 插件 可以从 git 存储库获取影响图或类似的东西 而无需通过 github 就数据收集而言 我可以生成图表 我不确定从哪里开始编写自己的代码 我假设有一些标志我可以传递给 git log 来
  • 在 .gitconfig 中隐藏 GitHub 令牌

    我想将所有点文件存储在 GitHub 上 包括 gitconfig 这需要我将 GitHub 令牌隐藏在 gitconfig 中 为此 我有一个 gitconfig hidden token 文件 这是我打算编辑并放在隐藏令牌的 git 下
  • Jenkins GIT 包含从未构建过的区域

    我正在尝试使用包含区域在 Jenkins 中构建我的工作 但每当选中此选项时 民意调查结果总是说未检测到任何更改 我尝试了许多不同的路径 以及使用工作区进行 不进行强制轮询 结果是轮询从未检测到任何更改 但一旦我删除这些选项 它们就会在下一
  • paramiko ssh.connect - 要发送什么参数?

    我真的很新python and ssh 我正在尝试编写一个简单的程序来打开ssh连接使用python 我已经有了paramiko 但我遇到的问题是 使用终端我使用以下命令打开我的ssh ssh username email protecte
  • 如何使用 git --word-diff 显示空格差异?

    为了说明问题 参见diff https github com nim lang Nim commit 47c7fd037ed28b7de3d120b003d059d30e18f128 diff split diff 8af935b2312d

随机推荐