【问题标题】:How to Git clone in Cygwin?如何在 Cygwin 中进行 Git 克隆?
【发布时间】:2020-06-15 18:29:41
【问题描述】:

我正在尝试使用 Cygwin 从我们公司的 Git 服务器克隆。但是,Cygwin 使用安装在我的机器上的外部 Git bash。这会导致兼容性问题。我在 C:\Users\user.ssh 中有一个密钥,并且在 Cygwin 的 /home/user/.ssh 中有单独的 SSH 密钥。但是,向 ssh 添加详细信息,我看到了这一点,

debug1: identity file /c/cygwin/home/user/.ssh/id_rsa type 0
debug1: key_load_public: No such file or directory

现在,Cygwin 将 C 盘映射到 /cygdrive/c,所以这会失败。此外,创建软链接 ln -s /c /cygdrive/c 给出相同的结果。谁知道我如何重新配置​​ Cygwin 或 ssh 来处理这个问题?
BR
帕特里克

编辑:
我显然对所有其他 SSH 文件也有同样的问题,比如密钥等。

EDIT2:
我试图弄乱 Git 使用的 ssh 客户端中的某些变量。在添加然后删除属性 UserKnownHostsFile 之后,事情突然开始起作用了。我不知道它是如何重新开始工作的,但这种行为非常奇怪。

【问题讨论】:

  • @phd 我不确定这是否可以解决问题。据我了解,git bash 不使用 SSH 中内置的 Cygwin,这导致 SSH 的更改将解决 Cygwin 的问题,结果破坏了系统的其余部分。
  • @phd 我没有很好地解释 Cygwin 用户下载的外部 Git bash,但这个应用程序使用的 ssh 版本不是 cygwin 提供的 ssh。
  • 您可以使用 Cygwin 完成所有任务吗?从 Cygwin 安装所有内容,设置 $PATH,包括 Cygwin 但不包括 MSYS(git-bash 等)。
  • cygpath -w ~echo $PATH 的输出是什么?

标签: git ssh cygwin


【解决方案1】:

为了避免 Cygwin 使用任何非 Cygwin 程序,除非使用完整路径调用,

/etc/profile

包含

  # setting CYGWIN_USEWINPATH non-empty in the system variables
  # assumes that you've already set up PATH so that Cygwin works
  # correctly -- no further alteration is done
  if [ ${CYGWIN_USEWINPATH-nopathprepend} ] ; then
    # setting CYGWIN_NOWINPATH non-empty in the system variables
    # prevents use of the existing PATH and a clean PATH just for
    # Cygwin is set up -- you need to add any extra path components
    # you need in your personal startup files
    if [ ${CYGWIN_NOWINPATH-addwinpath} = "addwinpath" ] ; then
        PATH="/usr/local/bin:/usr/bin${PATH:+:${PATH}}"
    else
        PATH="/usr/local/bin:/usr/bin"
    fi
  fi

因此,如果您将变量 CYGWIN_NOWINPATH 设置为任何非空值 PATH 将被清理,并且只会执行 Cygwin 程序。
您可以尝试使用批处理文件,例如:

@echo off

C:
chdir C:\cygwin64\bin
set CYGWIN_NOWINPATH='true'

mintty -

假设你已经安装了 Cygwin gitOpenssh

$ type git
git is /usr/bin/git

$ type ssh
ssh is /usr/bin/ssh

【讨论】:

  • 这是一个很好的解决方法,我应该使用 Cygwin 安装附带的 git。但是,这并不能解决问题(顺便说一句,它几乎无缘无故地自行解决了......)。前一个问题的原因是我没有为Cygwin安装Git,我已经和Cygwin分开安装了Git。当我运行 ssh 时,它使用正确的版本,但是 Git 安装(内部)选择了另一个版本的 ssh,这与 Cygwin 配置无关。命令“which ssh”确实会显示 /usr/bin/ssh。
猜你喜欢
  • 2020-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-17
  • 1970-01-01
  • 2016-11-20
  • 1970-01-01
相关资源
最近更新 更多