在Ubuntu上设置本地git存储库

在Ubuntu上设置本地git存储库,git,ubuntu,Git,Ubuntu,我正试图在我的本地机器上设置一个Git repo,用于在我的本地机器上完成的工作-没有远程操作 我已经多次设置远程回购,但似乎我在本地执行的步骤总是以错误告终 我有两个目录:/home/rico/project和/home/git/project\u repo 我已经创建了git用户来管理我所有的git回购(我希望有几十个) 从/home/rico/project作为rico用户,我执行以下命令: rico@verbal:~/project$ git init Initialized empty

我正试图在我的本地机器上设置一个Git repo,用于在我的本地机器上完成的工作-没有远程操作

我已经多次设置远程回购,但似乎我在本地执行的步骤总是以错误告终

我有两个目录:
/home/rico/project
/home/git/project\u repo

我已经创建了git用户来管理我所有的git回购(我希望有几十个)

/home/rico/project
作为
rico
用户,我执行以下命令:

rico@verbal:~/project$ git init
Initialized empty Git repository in /home/rico/project/.git/
/home/git/project_repo
作为
git
用户,我执行以下操作:

git@verbal:~/project_repo$ git --bare init
Initialized empty Git repository in /home/git/project_repo
现在我回到我的项目并添加文件

rico@verbal:~/project$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       .project
#       .pydevproject
#       inc/
#       manage.py
#       rocksolidbox/
#       rsb/
#       templates/
rico@verbal:~/project$ git add inc media rocksolidbox/ rsb/ templates/
rico@verbal:~/project$ git commit -a -m "Initialize the project."
但收到以下错误:

Counting objects: 31, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (26/26), done.
error: insufficient permission for adding an object to repository database ./objects

fatal: failed to write object
Writing objects: 100% (31/31), 12.24 KiB, done.
Total 31 (delta 2), reused 0 (delta 0)
error: unpack failed: unpack-objects abnormal exit
To /home/git/project_repo/
 ! [remote rejected] master -> master (n/a (unpacker error))
error: failed to push some refs to '/home/git/project_repo/'
显然这是一个权限错误。我试着做了如下推送:

rico@verbal:~/project$ git push -u git@verbal:/home/git/rocksolidbox/ master
甚至使用我的本地IP:

rico@verbal:~/project$ git push -u git@192.168.1.101:/home/git/rocksolidbox/ master
它要求输入密码,我知道我提供的密码是正确的,我不断收到消息
权限被拒绝,请重试。


我只想能够将我的
项目
推送到我的
项目_repo
。我在这个设置中做错了什么?

好的,我已经找到了解决权限问题的方法。基本上是这样做的:

git@verbal:~/$ chmod -R 777 project_repo
然后,我可以对我的
项目执行以下命令:

rico@verbal:~/project$ git remote add origin /home/git/project_repo/
rico@verbal:~/project$ git push -u /home/git/project_repo/ master
然后,要在别处克隆项目,只需执行以下操作:

rico@verbal:~/some_other_location$ git clone /home/git/project_repo
你是金色的

现在,我的问题仍然是…这是处理权限问题的最佳方式吗?我真的不喜欢给任何东西
777
。我是否应该将
git
rico
放在同一组中,而改为
775

有什么建议吗

编辑1:
git
rico
放在同一组中,做
775
没有帮助。777可以很好地使用,但我不喜欢这个解决方案。

不要做那些花哨的步法。你想要。

我在同一点上被卡住了。“出了点问题”到目前为止信息量不大。在比较了几十篇题为“howtos”的文章后,我发现了主要问题。大多数示例的客户机和服务器位于同一主机上。那不是我想要的。按照下面所示的方式编辑~/.ssh/config之后,它就像一个魔咒

对于本例,服务器主机名为gitolite,在服务器上安装gitolite的特殊帐户名为git,客户端上的用户名为harrie,并且/home/harrie/中的密钥对由“ssh-keygen-t rsa-f harrie”生成

~/.ssh/config

Host gitolite
        User git
        Hostname gitolite
        Port 22
        IdentityFile ~/.ssh/harrie

那个文档不是很好<代码>**注意**:如果您被要求输入密码,则说明出现了问题。
好的……那么问题出在哪里,我该如何解决?到目前为止,我还没有印象。@Rico请尝试中的说明。@echristopherson抱歉,即使这些说明也很差。我甚至无法通过
安装
部分中的命令<代码>这对于安装脚本至关重要,因此请检查以确保您可以在不获得密码提示的情况下运行命令:他们从不谈论如何执行此操作。您是否希望其他人推送您的repo?如果不是,那么在不同的用户下进行裸回购就没有意义了。通常,您所做的模式(拥有您自己的用户和一个
git
用户)用于您不想让其他人访问您自己个人帐户的团队环境。如果您这样做是为了确保用户在发出命令时保持笔直,这一点很重要
rico
应仅对非裸回购发出命令,
git
应仅对裸回购发出命令。否则,当您执行推或拉操作时,文件权限将更改。我将与一个团队一起工作。那么,如何从
rico@verbal:~/project
到裸回购,但裸回购上没有
777
Host gitolite
        User git
        Hostname gitolite
        Port 22
        IdentityFile ~/.ssh/harrie