我正在尝试在我的本地计算机上设置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
。我在这个设置中做错了什么?
答案 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
任何东西。我应该将git
和rico
放在同一个组中,而是775
吗?
有什么建议吗?
EDIT1:
将git
和rico
放在同一个群组中并执行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