我的 package.json 中有 3 个私有依赖项。当我运行 npm install 时出现错误。请注意,当我进行克隆时,它只会克隆 NPM 安装不起作用
Cloning into bare repository
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights and the repository exists.
Run Code Online (Sandbox Code Playgroud)
整个日志在下面。
相关的类似问题很少,但没有一个在我的场景中提供解决方案。最初我认为是 nodejs 和 npm 版本问题,所以我通过运行 windows nodejs.msi 更新了它们,目前版本如图所示。

我的package.json的内容如下:(大部分都去掉了,只提到了重要的私有依赖)
"dependencies": {
"private-dep2": "git+ssh://git@github.comp.com:reph/private-dep2.git#v0.3.5"
},
"devDependencies": {
"ember-cli": "0.2.5",
"ember-cli-app-version": "0.3.3",
"tough-cookie": "^0.12.1",
"private-dep3": "git+ssh://git@github.comp.com:reph/private-dep3.git#v0.3.5",
"private-dep1": "git+ssh://git@github.comp.com:reph/private-dep1.git#v0.7.5"
}
Run Code Online (Sandbox Code Playgroud)
整个日志如下:
PS C:\DDrive\Projects\p-ceck> npm cache clean
PS C:\DDrive\Projects\p-ceck>
PS C:\DDrive\Projects\p-ceck>
PS C:\DDrive\Projects\p-ceck> bower cache clean …Run Code Online (Sandbox Code Playgroud) ubuntu@site3-user03:/projects$ git clone git://git.alsa-project.org/alsa-driver.git
Run Code Online (Sandbox Code Playgroud)
被执行了.它导致了以下输出
Cloning into 'alsa-driver'...
remote: Counting objects: 208801, done.
remote: Compressing objects: 100% (41538/41538), done.
remote: Total 208801 (delta 162528), reused 206283 (delta 160012)
Receiving objects: 100% (208801/208801), 37.00 MiB | 1.53 MiB/s, done.
Resolving deltas: 100% (162528/162528), done.
Checking connectivity... done.
ubuntu@site3-user03:/projects$
Run Code Online (Sandbox Code Playgroud)
但是,由于某些未知原因,克隆过程不包括检出文件的阶段
:100%(xyz/zyx),完成.
通常,克隆过程包括结账到工作空间.在最终效果中,我的私人分叉有空的工作空间,我自己必须决定哪些分支可能不是直截了当.
ubuntu@site3-user03:/projects/alsa-driver$ git ls-remote origin
a1c6fbc1a65d8a755425d0b56077868148512891 HEAD
1721fb542b00f1c7aebc923732068f403b6062ad refs/heads/build
a1c6fbc1a65d8a755425d0b56077868148512891 refs/heads/master
71b3b2b41dfbdeda78e2e7b62fe2afa8b451fb6e refs/heads/mirror
b044dfe04f636d87fd391b575ba41e495e68e973 refs/heads/release
6386d9e39e6f364698648f4e4741897f83b00121 refs/tags/build/v1.0.1
234b00ebe6e1513c3ce8cdd83999c255bd5516eb refs/tags/build/v1.0.10
f888eb06d4c7af89faa2f9dda189d488312ecb07 refs/tags/build/v1.0.10rc1
e4c4d1037521f536b79f8d145979ec869db353f9 refs/tags/build/v1.0.10rc2
....
many more tags
Run Code Online (Sandbox Code Playgroud)
我的期望是克隆执行基于远程HEAD的签出,指向远程的某些提交.
跳过退房阶段的可能原因是什么? …
假设我递归地克隆一个存储库。
$ git clone --recursive ssh://server/project/client
Cloning into 'client'...
remote: Counting objects: 191, done
remote: Finding sources: 100% (191/191)
remote: Total 191 (delta 53), reused 159 (delta 53)
Receiving objects: 100% (191/191), 27.59 KiB | 0 bytes/s, done.
Resolving deltas: 100% (53/53), done.
Checking connectivity... done.
Submodule 'gui' (ssh://server/project/client/gui.git) registered for path 'gui'
Cloning into 'gui'...
remote: Counting objects: 3213, done
remote: Finding sources: 100% (3213/3213)
remote: Total 3213 (delta 1272), reused 3107 (delta 1272)
Receiving objects: 100% (3213/3213), 47.88 …Run Code Online (Sandbox Code Playgroud) 我一直在尝试通过将一些文件移动到 git LFS 来减小 Git 存储库的大小。再加上几个 100 个命令,这里我们的文件位于 git LFS 中,并且我的 git 提交中不再有这些文件的历史记录。
然而,每当我克隆存储库时,我仍然会下载大约 3GB 的对象。我通过在 Visual Studio Team Services 中创建一个新存储库来解决这个问题,在本地修剪和垃圾收集我的存储库,然后推送到那里后,它减少到 300mb。(在这篇文章中本地执行此操作的命令:Git:什么是悬空提交/blob 以及它们来自哪里?)
但是我无法想象您总是必须删除/重新创建完整的存储库才能删除悬而未决的提交。
我还尝试过执行 git init,然后将其推送到现有存储库上,但它只会进一步增加对象数量。
对于也遇到类似问题的任何人,这些是我执行的用于创建新存储库而不需要悬空提交的命令,但是我想了解如何在现有存储库中执行此操作而不必删除它:
git clone https://avavedse.visualstudio.com/Test/_git/TestRepository
cd blahblah
git reflog expire --expire=now --all
git gc --prune=now
git remote add newrepo https://avavedse.visualstudio.com/Test/_git/TestRepositoryNewEdition
git push newrepo
Run Code Online (Sandbox Code Playgroud) 我知道在 SO 上已经有很多关于这个主题的问题,我尝试了他们提出的几乎所有解决方案,但我目前无法让它工作(我想要的方式)是)。
我有一个在 Jenkins 中启动的 docker 容器,在这个 docker 容器中,我尝试克隆一个私有存储库。为此,我需要将我的公共 Jenkins 密钥添加到我的 Git 存储库中,并且我的 docker 容器需要知道这个 SSH 密钥。
我已经能够通过在 my 中执行以下操作来做到这一点Jenkinsfile:
docker.image('php_jenkins_test').inside('--env COMPOSER_HOME=$WORKSPACE/.composer -v /etc/passwd:/etc/passwd:ro -v /home/jenkins/.ssh:/home/jenkins/.ssh:ro') {
sshagent(['jenkins-ssh-publickey']) {
sh "./test/run-tests.sh"
}
}
Run Code Online (Sandbox Code Playgroud)
由于以下原因,我将我的etc/passwd和/home/jenkins/.ssh作为只读卷挂载:
/etc/passwd.known_hosts(和我的密钥?)需要在我的 docker 容器中知道。由于/etc/passwd将 jenkins 用户映射到/home/jenkins,我还必须在我的来宾计算机上安装 Jenkins 的 SSH 目录。sshagent-command树立SSH插座等等,我的钥匙是我的容器内访问(纠正我,如果我错了,我是相当新的詹金斯和码头工人)。就像我说的:这已经有效了。通过此设置,我可以在 Jenkins 的 docker …
我在使用 fastlane 和从 BitBucket 克隆 git repo 时遇到了一些问题。我收到以下错误:
fatal: could not read Username for 'https://bitbucket.org': terminal prompts disabled
[17:21:34]: Exit status: 128
[17:21:34]: Error cloning certificates repo, please make sure you have read access to the repository you want to use
[17:21:34]: Run the following command manually to make sure you're properly authenticated:
Run Code Online (Sandbox Code Playgroud)
我可以git clone毫无问题地手动repo,但是当我使用 fastlane 运行它时,我遇到了问题。
bitbucket command-line-interface git-clone fastlane fastlane-match
我正在尝试将分支推送到 gitlab 远程存储库,行为示例如下:
git clone http://(path to branch)
Cloning into 'origin'...
fatal: unable to update url base from redirection:
asked for: http://(path to branch)/info/refs?service=git-upload-pack
redirect: http://(path to root)/users/sign_in
Run Code Online (Sandbox Code Playgroud)
请注意 url 上的更改,并且我还在 .git/config 中输入了我的凭据,如下所示
[user]
name = myname
pwd = mypassword
password = mypassword
Run Code Online (Sandbox Code Playgroud)
当我注册时,存储库要求我必须专门为该项目制作一个公钥,这可能是相关的。
环境信息
\n\n~$ git --version\ngit version 2.11.0\n~$ git svn --version\ngit-svn version 2.11.0 (svn 1.9.5)\n~$ svn --version\nsvn, version 1.9.5 (r1770682)\nRun Code Online (Sandbox Code Playgroud)\n\n我正在尝试克隆内部托管的 SVN 存储库,但遇到以下错误:
\n\n~$ git svn clone http://[server]/svn/dev1\nInitialized empty Git repository in [~]/test/[root]/.git/\nCan\'t create session: Unable to connect to a repository at URL \\\n \'http://[server]/svn/[root]\' at /usr/share/perl5/Git/SVN.pm line 148.\nRun Code Online (Sandbox Code Playgroud)\n\nSVN 结账按预期工作。我尝试过使用该svn://协议,但它无法识别[server]为已知的主机名。
如果我分成clone和init,fetch则这fetch一步失败。
我应该补充一点,遗憾的是,像 SmartGit 这样的解决方案不适合我;我在一家拥有超过 1000 名开发人员的公司工作,因此支持一名开发人员的成本将是天文数字。
\n\nSVN.pm:148从我研究的其他地方读取my $ra = …
更具体地说,如何判断磁盘上的存储库的来源是否是某个存储库的分支?我认为这应该是一些 API 调用,但我不确定。我可以依赖“remote.upstream.url”吗?
如何通过ssh而不是从 Bitbucket 克隆存储库http?我已经git安装在我的本地机器上(Windows)。