我买了一个个人开发盒,用于部署我在笔记本电脑上创建的东西。我认为使用Git进行代码管理是个好主意。我的想法是,我将继续在我的笔记本电脑上提交,并在需要时,将更改推送到远程开发框。
但在做git push
后我收到此错误:
remote:错误:拒绝更新签出的分支:refs / heads / master remote:错误:默认情况下,更新非裸存储库中的当前分支 remote:error:被拒绝,因为它会使索引和工作树不一致 remote:错误:你推了什么,并且需要'git reset --hard'来匹配
我知道远程回购不是裸露的。
我想问一下,采用我的设置的唯一方法是:
即使这样设置也会给我带来错误:
No refs in common and none specified; doing nothing.
Perhaps you should specify a branch such as 'master'.
fatal: The remote end hung up unexpectedly
修改的
我试过
git push origin master
出现此错误:
error: unable to create directory for .git/refs/remotes/origin/master
error: Cannot lock the ref 'refs/remotes/origin/master'.
哦,愚蠢的我...我认为它是sudo
,如
sudo make me intelligent
答案 0 :(得分:10)
正如你所说,第一条消息是因为遥控器不是一个简单的回购。
第二条消息是因为您创建的裸仓库没有分支开头。克隆存储库并签出工作副本时,它会为您创建主分支。但是当你试图推动时,远程仓库上没有主分支,所以它会抱怨。
尝试使用git push origin master
(或调用遥控器),它应该为您在遥控器上创建分支。
答案 1 :(得分:0)
第二个问题:
error: unable to create directory for .git/refs/remotes/origin/master
error: Cannot lock the ref 'refs/remotes/origin/master'.
当您的文件所有权和权限错误时,会显示。此消息表示在当前的workin repo中,您尝试从某些文件推送是不可写的。看一下.git/refs/remotes/origin/master
的整个路径来发现问题。 我建议不要使用git sudo,因为这会创建文件等作为unix用户root,并阻止其他人以后使用此repo而不用sudo一直在使用。
如果您发现自己处于多用户环境中,您可能会创建一个新的user git
,其中包含空密码(该用户没有ssh!),可以通过{{切换到1}}(su =切换用户)处理所有推送/抓取/克隆等。这基本上是 deamonized setup 也会做的(任何元文件的一个用户)但可能有一些优点在某些情况下。