Git

Git clone 工作正常,但 git push 不行

  • March 13, 2013

我在 Git 伺服器上創建了一個測試 git repo:

/var/cache/git/username/myGitRepo.git

這是一個“裸”的 git repo。文件的所有權屬於這個“使用者名”使用者。我可以在另一台 Windows 機器上複製上面的 Git 儲存庫。

git clone git://myhost/var/cache/git/username/myGitRepo.git

回購正確複製。然後我可以進行本地送出並嘗試將更改推送回我的 Git 伺服器:

git push origin master

但這會在伺服器上產生權限錯誤:

fatal: remote error: access denied or repository not exported: /git/username/myGitRepo.git

git-daemon-export-ok我在 repo 目錄中添加了魔術文件 ’ ’ 文件。但我不斷收到上述錯誤。

我什chmod至設置777/var/cache/git/username/myGitRepo.git

得到同樣的錯誤。

Git remote -v 拋出以下輸出。

$ git remote -v
origin  git://myhost/git/username/myGitRepo.git (fetch)
origin  git://myhost/git/username/myGitRepo.git (push)

任何人都可以幫助我解決這個錯誤嗎?

開箱即用,該標準git-daemon不允許您push進入儲存庫。手冊頁說:

這非常適合只讀更新,即從 git 儲存庫中提取。

如果您真的想啟用匿名push(實際上,您不這樣做;只需使用ssh),您需要啟用receive-pack預設禁用的服務(因為這是一個壞主意)。同樣,從手冊頁(服務部分):

收包

這服務於 git send-pack 客戶端,允許匿名推送。預設情況下它是禁用的,因為協議中沒有身份驗證(換句話說,任何人都可以將任何內容推送到儲存庫中,包括刪除 refs)。

粗體是我的。您可以通過傳遞命令行選項全域啟用此服務,或者通過在儲存庫的 git 配置中設置為--enable=receive-pack每個儲存庫來啟用此服務。daemon.receivepack``true

引用自:https://serverfault.com/questions/487408