Git
Git clone 工作正常,但 git push 不行
我在 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