故障排除git pull

3

我在一台我用作媒体中心/备份服务器的Ubuntu机器上通过ssh设置了git仓库。

我所采取的步骤如下:

cd repos
git init <repoName>
cd <repoName>
git config --bool core.bare true

我已经通过TortoiseGit成功地在我的台式电脑和笔记本之间进行了推送和拉取,但是使用SSH进行的git pull操作返回以下错误:

fatal: /usr/lib/git-core/gitpull cannot be used without a working tree. 

我对终端/ssh非常陌生,所以任何帮助都将不胜感激!


顺便提一下,你可以使用 git init --bare myrepo 来省略一步。 - Andrew Marshall
2个回答

4
你需要将代码推送到裸仓库。拉取操作无法生效,因为它需要合并工作目录,这也是你看到的错误信息所说的。因此,请从将要使用的存储库设置一个远程连接到裸仓库,然后进行推送。
附注:创建裸仓库的理想方式是执行git init --bare <reponame>

谢谢回答。我认为我需要研究一下普通仓库和裸仓库之间的区别,以查明我为什么首先要使用裸仓库... - Front_End_Dev
现在我记得为什么了:![远程拒绝]主->主(分支当前已检出) 错误:无法将某些引用推送到'ssh:// - Front_End_Dev
@Bms85smb - 是的,将代码推送到裸仓库是标准做法。 - manojlds
那我可能需要一个普通的代码库?唯一的问题是我遇到了上面显示的错误,无法推送... - Front_End_Dev
感谢 manojlds 的帮助,我已经弄清楚了。裸仓库是一个“非工作仓库”,这就是为什么我无法拉取到它。如果我想从我的 Ubuntu 箱子中进行工作,我必须在其他地方克隆该仓库。 - Front_End_Dev
显示剩余3条评论

1
一个裸仓库没有工作树。`git pull`在功能上与`git fetch`后跟`git merge`是一样的,而要进行合并操作,你必须有一个工作树(以防有冲突需要解决)。

谢谢。我不认为我想使用裸仓库。我只是因为读到它作为解决推问题的解决方案(请参见我的评论给manojlds)才使用它。 - Front_End_Dev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接