在Ubuntu上设置本地git存储库

时间:2012-10-14 17:38:48

标签: git ubuntu

我正在尝试在我的本地计算机上设置Git仓库,以便在我的本地计算机上完成工作 - 没有远程任何东西。

我已多次设置远程回购,但似乎我在本地采取的步骤总是会出错。

我有两个目录:/home/rico/project/home/git/project_repo

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

/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."

此时我收到正常的提交消息 - 23 files changed, 989 insertions(+)等。

现在,我想将其推送到project_repo文件夹。

rico@verbal:~/project$ git remote add origin /home/git/rocksolidbox/
rico@verbal:~/project$ git push -u /home/git/rocksolidbox/ master

但收到以下错误:

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

它要求输入密码,我知道我正在提供密码,并且我不断收到消息Permission denied, please try again.

我只想将project推送到project_repo。我在这个设置中做错了什么?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

git@verbal:~/$ chmod -R 777 project_repo

然后我可以使用project

执行以下命令
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任何东西。我应该将gitrico放在同一个组中,而是775吗?

有什么建议吗?

EDIT1: 将gitrico放在同一个群组中并执行775并没有帮助。它适用于777,但我不喜欢这个解决方案。

答案 2 :(得分:0)

我被困在同一点上。到目前为止,“出了问题”并不是很有用。在比较了几十个“这是小菜一碟”之后 - 我想出了主要的问题。大多数示例在同一主机上具有客户端和服务器。那不是我想要的。按照下面显示的方式编辑〜/ .ssh / config后,它就像魅力一样。

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

的〜/ .ssh /配置

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