我有一個本地Git存儲庫。我想讓它在遠程的,啓用ssh的服務器上可用。我該怎麼做呢?如何從本地創建遠程Git存儲庫?
回答
我想你把遠程側,git init --bare
純倉庫,添加遠程側推/拉跟蹤你的本地倉庫(git remote add origin URL
),然後在本地你剛纔說git push origin master
。現在任何其他存儲庫都可以從遠程存儲庫中獲取pull
。
對於在Windows上創建本地副本並希望在Unix系統上創建對應的遠程存儲庫的人的說明,其中文本文件在類Unix系統上的開發人員獲得更多克隆的LF結尾,但CRLF結束在Windows上。
如果您在setting up line-ending translation之前創建了您的Windows存儲庫,那麼您遇到了問題。 Git的默認設置沒有翻譯,因此您的工作集使用CRLF,但您的存儲庫(即存儲在.git下的數據)已將文件另存爲CRLF。
當您推送到遠程時,保存的文件將按原樣複製,不會發生行結束翻譯。 (當文件被提交到存儲庫時,而不是在存儲庫被推送時,行結束轉換髮生)。你最終會在你的類Unix庫中得到CRLF,這不是你想要的。
要在遠程存儲庫中獲取LF,必須首先確保LF位於本地存儲庫中,編號爲re-normalizing your Windows repository。這對你的Windows工作集沒有明顯的影響,它仍然有CRLF結束,但是當你推到遠程時,遠程將正確地獲得LF。我不知道是否有一種簡單的方法可以告訴你在Windows庫中有哪些行結束符 - 我想你可以通過設置core.autocrlf = false然後克隆來測試它(如果repo有LF結尾,克隆也會有LF)。
爲了最初設置任何Git服務器,您必須將現有存儲庫導出到新的裸存儲庫 - 一個不包含工作目錄的存儲庫。這通常很簡單。爲了克隆您的存儲庫以創建新的裸存儲庫,可以使用--bare
選項運行clone命令。按照慣例,在.git
裸倉庫目錄結束,就像這樣:
$ git clone --bare my_project my_project.git
Initialized empty Git repository in /opt/projects/my_project.git/
此命令通過本身需要Git倉庫,沒有工作目錄,並單獨爲它專門創建一個目錄。
既然你有一個倉庫的副本,你需要做的就是把它放在服務器上並設置你的協議。假設您已經設置了一個名爲git.example.com
的服務器,您可以使用SSH訪問該服務器,並且您想要將所有Git存儲庫存儲在/opt/git
目錄下。您可以複製你的裸庫在設置新的倉庫:
$ scp -r my_project.git [email protected]:/opt/git
在這一點上,誰也已只讀訪問同一臺服務器到/opt/git
目錄SSH訪問其他用戶可以通過運行克隆你的倉庫
$ git clone [email protected]:/opt/git/my_project.git
如果用戶SSHS到服務器,並有寫權限的目錄/opt/git/my_project.git
,他們也將自動具有推送權限。如果使用--shared
選項運行git init命令,Git會自動將組寫入權限添加到存儲庫。
$ ssh [email protected]
$ cd /opt/git/my_project.git
$ git init --bare --shared
這是很容易採取的Git倉庫,創建一個純的版本,並將其放置在服務器上到你和你的合作者有SSH訪問。現在您已準備好在同一個項目上進行協作。
'scp'解決方案在實踐中比'init -bare'更好地工作。儘管首先在本地克隆,然後複製到服務器,但它仍然感覺有點醜陋,希望git有一個命令可以一次完成。 – leftaroundabout
爲此+1了,因爲'--shared'爲我工作。我不知道會發生什麼,如果你使用'git init --shared'而不做一個'--bare' ... – icedwater
在遠程不支持的情況下在本地創建一個裸倉庫和'scp', git init --bare'(就像我用git 1.5.5,2008那樣)。我認爲這應該工作,即使遙控器根本沒有git。 –
通常情況下,你可以通過只使用init
命令
git init
在你的情況設置了一個混帳回購協議,已經有一個遠程可回購。取決於你如何訪問您的遠程回購(用URL或處理驗證一個SSH密鑰中的用戶名)只使用clone
命令:
git clone [email protected][my.url.com]:[git-repo-name].git
也有其他的方法來克隆回購。這樣你就可以調用它,如果你的計算機上有一個ssh密鑰設置,它將驗證是否拉動你的存儲庫。如果您想要在其中包含密碼和用戶名以登錄到遠程存儲庫,還有其他URL組合。
這有多諷刺... 今天有人剛剛低估了這個答案,現在我正在努力推動我的文件。看起來我需要一些git鍛鍊來再次入手! –
我認爲問題在於OP想要一個解決方案在ssh服務器上創建遠程repo,但是您描述瞭如何從遠程ssh服務器創建本地repo。你沒有回答這個問題。 (不是我是下來。) – peterh
您需要在遠程服務器上創建一個目錄。然後使用「git init」命令將其設置爲存儲庫。這應該爲每個新項目(每個新文件夾)完成
假設您已經使用ssh密鑰設置和使用git,我編寫了一個小型Python腳本,該腳本在從工作目錄執行時將設置遠程並將該目錄初始化爲一個git倉庫。當然,你將不得不編輯腳本(只有一次),告訴它所有存儲庫的服務器和根路徑。
在這裏檢查 - https://github.com/skbobade/ocgi
- 1. Git:創建本地和遠程存儲庫,如何使用我推送到遠程存儲庫的文件?
- 2. Mercurial:在遠程存儲庫創建遠程存儲庫的本地副本
- 3. 遠程和本地git存儲庫
- 4. 如何將我的本地Git存儲庫移動到遠程Git存儲庫
- 5. 如何從GitHub重新創建我的本地git存儲庫
- 6. 從本地創建遠程存儲庫,Pycharm
- 7. 在遠程服務器上創建本地git存儲庫副本
- 8. 如何刪除本地git存儲庫中的遠程分支?
- 9. 在同一個系統上創建遠程和本地git存儲庫?
- 10. 如何清理遠程GIT存儲庫?
- 11. 如何分組遠程GIT存儲庫
- 12. 如何更新GIT遠程存儲庫?
- 13. SVN外部從本地存儲庫到遠程存儲庫
- 14. 從本地文件夾創建一個遠程git倉庫
- 15. Git:從存儲庫中遠程提取
- 16. 從遠程git存儲庫中更改
- 17. 如何從命令行(Git Bash)刪除遠程Git存儲庫?
- 18. 製作遠程git存儲庫的本地副本
- 19. 如何從多個本地非Git版本創建GitHub存儲庫
- 20. Git不會將本地存儲庫與遠程存儲庫同步
- 21. Git:如何直接從遠程存儲庫進行存檔?
- 22. 如何幹淨地獲取/複製遠程git分支到本地存儲庫
- 23. git推送到遠程存儲庫「無法從遠程存儲庫讀取」
- 24. 如何從遠程Git存儲庫中取出並覆蓋本地存儲庫中的更改?
- 25. 如何從當前現有的本地git存儲庫中最好地建立一個「中央」git存儲庫?
- 26. 如何創建從原始存儲庫中省略某些文件的Git遠程存儲庫?
- 27. 如何重置「本地」git存儲庫?
- 28. 我如何知道Git存儲庫的遠程地址?
- 29. 如何配置遠程存儲庫以接受本地創建的分支?
- 30. 本地和遠程git存儲庫問題
@Nips:是的,對,對不起。你推動個別分支,的確如此! –
如果我正在使用GUI,該怎麼辦?如何爲所有存儲庫設置服務器,並且同一網絡上的每臺PC連接到該服務器? – SearchForKnowledge
如果'git push origin master'失敗並顯示「repository not found」錯誤,請嘗試在遠端執行'git update-server-info',在那裏執行了'git init --bare' – HongKilDong