我們可以選擇將自己的專案託管在github上,以實現多人開發。如果在內網環境開發或者不想將**託管到github上,那麼可以選擇在一台自己的伺服器上部署git以實現**託管和協同開發。
首先需要在伺服器安裝git,如果是可以訪問網路,那麼可以通過執行yum install git
進行安裝;如果不能訪問網路,那麼可以選擇從源**安裝,但這時候需要注意首先要把git的依賴包安裝。可以參考幫助手冊。
關於裸倉庫的解釋,可以參考這篇文章,可以簡單將裸倉庫理解為(可能並不嚴謹)乙個不包含任何實質內容、並且可以供開發者進行**提交的倉庫。
初始化乙個裸倉庫的命令為:git init --bare your-repo.git
,可以看出,由於在初始化時指定了--bare
引數,因此該倉庫是乙個裸倉庫。
假如你當前在/home/projects
路徑下,那麼在該目錄下就會生成乙個名為your-repo.git
的倉庫,實際上就是乙個被git初始化了的目錄。
之所以要在倉庫名後面加上.git
,實際上是一種約定俗稱的寫法,回想一下我們從github上轉殖倉庫時,倉庫名稱往往也是以.git
結尾的。
假設你的伺服器的ip位址是123.456.78.9,且你的工作電腦有足夠的許可權來讀寫伺服器(至少是倉庫目錄),那麼接下來要做的事情就是將剛剛建立的倉庫轉殖到本地。
命令如下:
git clone [email protected]:/home/projects/your-repo.git
可能會需要你輸入遠端伺服器的密碼,一切順利之後,你會將整個倉庫轉殖到你的本地工作電腦上。然後你就可以在本地進行編碼編寫了,完成工作之後,可以進行提交,也可以通過push命令同步**到遠端倉庫。
上述過程是一種最簡單的搭建git倉庫的方法,沒有涉及到對協同工作人員的許可權的管理。如果你想要了解更加全面的內容,那麼就應該去git的幫助文件查詢有關內容。後續我遇到了新的問題,也會補充在這篇文章的第5部分。
2023年8月31日我在測試的過程中,遇到了乙個本地提交無法推送到遠端倉庫的問題,報錯提示如下:
push master to origin/master was rejected by remote
很明顯,這是遠端伺服器拒絕了本地的推送請求,原因只有乙個,那就是許可權不夠。
我解決這個問題的方法是,先獲取到本地電腦的ssh公鑰,然後將該公鑰新增到伺服器使用者(由於我沒有設定別的使用者,因此就是新增到root使用者下)的authorized_keys
檔案下。
該檔案通常位於~/.ssh
目錄下。從檔名就可以看出,該檔案的作用就是記錄那些被授權的主機的公鑰資訊的。
2023年9月1日步驟:
如果我另外建立了乙個非root使用者,比如說使用者名稱是git
;
然後我用git
使用者初始化了乙個裸倉庫,目錄為/srv/git/project.git
;
在我的工作電腦上,輸入git clone [email protected]:/srv/git/project.git
後輸入該使用者的密碼後就可以將倉庫轉殖到本地,也可以成功提交和推送。
檢查git
使用者的~/.ssh/authorized_keys
,發現為空。
為什麼直接就可以推送成功而沒有出現5.1中的問題呢?我回想了一遍整個過程,問題可能出在第1步和第2步中間。
前面已經提到,裸倉庫的建立實際上是先建立乙個目錄,然後在該目錄下執行git命令即可;我在建立目錄的時候用的git
使用者,而為了能夠讓git
使用者具有完整的許可權,我的操作是:用root使用者將/srv
目錄設定為所有使用者可讀寫,即執行了命令chmod a+rw -r /srv
。我懷疑是因此而導致我的工作電腦也具有了對該倉庫(目錄)的讀寫許可權了。
明天再驗證吧。
如何在Mac os X上搭建本地伺服器環境
現在終於找到mac上最好用的本地伺服器軟體了,一鍵安裝apache mysql php postfix等伺服器軟體,簡單方便,並且可以集中管理和調整執行環境,支援php多版本切換 imagemagick圖形處理工具 動態dns 虛擬伺服器 phpmyadmin等等工具,還支援一鍵安裝wordpres...
如何在Mac上快速搭建git伺服器
網上看了好多教程,感覺晦澀難懂,還是自己寫一篇吧。1,mac開啟ssh服務。至於怎麼開啟,這裡有一篇博文可以參考 2,開啟ssh免密碼登入 此步驟非必須,可以跳過。如果沒有開啟ssh免密碼登入,那麼以後別人每次clone我們的git倉庫時,都需要輸入mac主機ssh登入的賬號和密碼。開啟ssh免密碼...
Linux伺服器上搭建svn伺服器
使用yum安裝svn,命令如下 yum y install subversion安裝完成之後,驗證安裝結果 在 opt目錄下面建立乙個svn目錄,用來作為svn儲存目錄,命令如下 mkdir opt svn執行如下命令,建立乙個倉庫 svnadmin create opt svn myproject...