2012-10-14 58 views
2

我試圖在本地機器上爲我的本地機器上正在進行的工作設置一個Git repo - 沒有任何遠程任何東西。在Ubuntu上設置本地git存儲庫

我已經安裝了多次遠程回購,但似乎我在本地採取的步驟總是以錯誤結束。

我有2個目錄:/home/rico/project/home/git/project_repo

我創建了Git的用戶來管理我所有的git回購(我希望能有幾十個)。

/home/rico/project作爲rico用戶我做了下面的命令:

[email protected]:~/project$ git init 
Initialized empty Git repository in /home/rico/project/.git/ 

/home/git/project_repogit用戶我做了以下內容:

[email protected]:~/project_repo$ git --bare init 
Initialized empty Git repository in /home/git/project_repo 

現在我回到我的項目,並添加文件。

[email protected]:~/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/ 
[email protected]:~/project$ git add inc media rocksolidbox/ rsb/ templates/ 
[email protected]:~/project$ git commit -a -m "Initialize the project." 

在這一點上我得到正常的提交信息 - 23 files changed, 989 insertions(+)

現在,我想這推到project_repo文件夾。

[email protected]:~/project$ git remote add origin /home/git/rocksolidbox/ 
[email protected]:~/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/' 

顯然,這是一個權限錯誤。我試着做推如:

[email protected]:~/project$ git push -u [email protected]:/home/git/rocksolidbox/ master 

甚至使用我的本地IP:

[email protected]:~/project$ git push -u [email protected]:/home/git/rocksolidbox/ master 

它要求輸入密碼,我知道我提供正確,我不斷地得到消息Permission denied, please try again.

我只是想能夠將我的project推到我的project_repo。我在這個設置中做了什麼錯誤?

回答

0

好的,我已經想出瞭解決權限問題的方法。基本上做到這一點:

[email protected]:~/$ chmod -R 777 project_repo 

然後我就可以用我的project執行以下命令:

[email protected]:~/project$ git remote add origin /home/git/project_repo/ 
[email protected]:~/project$ git push -u /home/git/project_repo/ master 

然後克隆項目的其他地方簡單地做:

[email protected]:~/some_other_location$ git clone /home/git/project_repo 

而你是金。

現在,我的問題仍然是...這是處理權限問題的最佳方式?我真的不喜歡給777任何東西的想法。我是否應該將gitrico放在同一組中並改爲775

有什麼建議嗎?

EDIT1: 把gitrico在同一組,做775沒有幫助。它適用於777,但我不喜歡這個解決方案。

+0

你期待別人推到你的回購?如果不是,在不同的用戶下製作裸回購沒有意義。一般來說,您所做的模式(擁有自己的用戶和'git'用戶)適用於您不想讓其他人訪問您自己的個人帳戶的團隊環境。如果你這樣做是很重要的,以確保你的用戶在發出命令時保持直線...'rico'只能在非裸回購單上發出命令,'git'只能在裸回購單上發出命令。否則,當您執行推或拉操作時,文件權限_will_會發生變化。 – 2012-10-16 06:37:59

+0

我將與一個團隊合作。那麼,我該如何從'rico @ verbal:〜/ project'推送裸露的回購庫,而不需要在裸回購庫上安裝'777'? – Rico

1

不要做所有那些花哨的權限步法。你想要gitolite

+0

該文檔不是很好。 '**注意**:如果您被要求輸入密碼,就會出現問題。「好的......那麼出了什麼問題,我該如何解決?到目前爲止我還沒有留下深刻的印象 – Rico

+0

@Rico請嘗試http://git-scm.com/book/en/Git-on-the-Server-Gitolite中的說明。 – echristopherson

+0

@echristopherson對不起,但即使這些說明也很差。我甚至無法越過'installation'部分的命令。 '這對於安裝腳本來說很重要,所以請檢查以確保您可以運行一個命令而不需要提示密碼:'他們從不談論如何做到這一點。 – Rico

0

我被卡在同一點。 「出現了問題」到目前爲止還沒有很多信息。在比較了幾十個「這是一塊蛋糕」之後,我找到了主要問題。大多數示例在同一主機上都有客戶端和服務器。這不是我想要的。按照下面所示的方式編輯〜/ .ssh/config後,它就像一個魅力一樣工作。

在這個例子中,服務器主機稱爲gitolite,特別帳戶的服務器上安裝gitolite被稱爲混帳,被命名爲的Harrie客戶端上的用戶和在/ home /的Harrie密鑰對/.ssh已由「ssh-keygen-t rsa -f harrie」生成。

的〜/ .ssh/config中

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