从cygwin bash成功克隆后,本地Git存储库不存在

时间:2015-12-14 12:01:38

标签: windows git cygwin

当我克隆到通过绝对路径引用的目录(不存在)时,git不会抱怨任何内容,报告0退出代码,但目录是创建。当我重试时,Git符合执行目录:

user@host /tmp
$ git clone https://github.com/zandev/shunit2.git /tmp/shunit01
Cloning into '/tmp/shunit01'...
remote: Counting objects: 1219, done.
emote: Total 1219 (delta 0), reused 0 (delta 0), pack-reused 1219
Receiving objects: 100% (1219/1219), 308.20 KiB | 0 bytes/s, done.
Resolving deltas: 100% (657/657), done.
Checking connectivity... done.

user@host /tmp
$ echo $?
0

user@host /tmp
$ ls /tmp/shunit01
ls: cannot access /tmp/shunit01: No such file or directory

user@host /tmp
$ git clone https://github.com/zandev/shunit2.git /tmp/shunit01
fatal: destination path '/tmp/shunit01' already exists and is not an empty directory.

user@host /tmp
$ echo $?
128

从cygwin,powershell或Windows UI检查时,目录似乎不存在。我没有看到任何类型错误的迹象。管理员帐户可以观察到同样的问题。

当使用非绝对路径(shunit02,甚至../tmp/shunit02)时,我可以正确克隆回购。

使用:

  • Windows 7企业版Ver 6.1 Build 7601 Service Pack 1
  • git 2.5.1.windows.1
  • cygwin 2.3.1-1

修改

/tmp目录被Windows视为C:\cygwin64\tmp。我使用/tmp作为示例,实际上在/cygdrive/c中也是如此。

编辑2:

我正在使用Git for Windows。当使用目标的widows路径时,克隆可以正常工作,例如:git clone https://github.com/zandev/shunit2.git 'C:\cygwin64\tmp\shunit4'

2 个答案:

答案 0 :(得分:2)

这是由 Git for Windows not accepting cygwin paths引起的,因此/a/b/c已转换为c:\a\b\c。事实上,这就是克隆存储库的地方,它解释了后续克隆尝试失败的原因。该目录实际上存在,但真正的目的地是意外的。

什么会起作用?

  • 使用 Git for Windows 附带的bash及其路径约定
  • 使用接受cygwin路径的cygwin git(据报道,可能存在其他问题),
  • 使用原生Windows路径:git clone https://github.com/zandev/shunit2.git 'C:\cygwin64\tmp\shunit4'
  • 使用相对目标名称,因为它似乎没有问题。

答案 1 :(得分:1)

您可以尝试重命名现有的/tmp并在cygwin安装文件夹中重新创建 ,如http://cs.nyu.edu/~yap/prog/cygwin/FAQs.html#tmpfiles中所述:

建议1

  问:在我安装了cygwin之后,我启动了它,它给出了   以下消息:bash.exe:警告:找不到/ tmp,请   创建! bash:/ etc / profile:无效的参数bash:/。bash_profile:   参数无效

     

答:您需要先创建目录/ tmp。一个 ssuming你的   cygwin根目录名为C:/ cygwin,这意味着你应该   首先创建目录C:/ cygwin / tmp

建议2

似乎你在Cygwin中使用Git Bash for Windows的git可执行文件。尝试使用Cygwin本身提供的git可执行文件可能是值得的。