利用win10的Linux子系統在PC上搭建git遠端倉庫
在win10上安裝ubuntu子系統
在控制面板中開啟linux子系統
在安裝和使用ubuntu子系統前,需要先在win10上允許啟用Linux子系統的功能。 進入Control Panel -> Programs -> Turn Windows features on or off,之後在彈窗中找到並勾選 Windows Subsystem for Linux,點選OK後會重啟電腦。
下載安裝Ubuntu子系統
接下來,在開始選單中找到微軟應用商店,即Microsoft Store。在Microsoft Store中搜索“Ubuntu”,然後選擇一個版本點選安裝(版本差別不大)。 安裝完成後即會執行一個Ubuntu終端。
在Ubuntu子系統上安裝配置git遠端倉庫
建立一個git倉庫
Ubuntu子系統預設安裝在C盤,如果PC上有其他硬碟比如D、E盤會被掛載在"/mnt/“目錄下,如E盤的路徑即”/mnt/e/"。 我們在PC上找到喜歡的地方建立一個git倉庫。比如在E盤上新建一個名為MyRemoteGitRepo 的資料夾,Ubuntu子系統中對應的路徑即為"/mnt/e/MyRemoteGitRepo/"。在終端裡,我們可以執行以下命令進入MyRemoteGitRepo
cd /mnt/e/MyRemoteGitRepo
git init --bare
git config --global user.name "you name it"
git config --global user.email "[email protected]"
這樣我們就建立了一個裸倉庫、設定了使用者名稱和聯絡郵箱。注意這個倉庫沒有工作區,純粹用來共享資訊。
配置ssh服務
在PC上配置ssh服務引數
git遠端倉庫建好了,但是想讓其他倉庫與之進行連線,我們需要開啟ssh服務並作配置。 開啟ssh服務端的配置檔案/etc/ssh/sshd_config:
sudo vi /etc/ssh/sshd_config
埠 port 預設為22但是已被佔用,取消註釋並修改為2200; 取消行註釋 ListenAddress; 取消行註釋 PubkeyAuthentication 並設定為 yes; 取消行註釋 AuthorizedKeysFile; 取消行註釋 PasswordAuthentication 並設定為 yes; 儲存退出後,啟動ssh服務端:
sudo service ssh start
檢查ssh服務執行狀態:
sudo service ssh status
看到 sshd is running 的資訊,說明ssh服務端啟動。 區域網下進行連線需要知道PC的Private IP:
ifconfig
圖中wifi0下的inet後面的 192.168.1.104 即為我PC的內網IP。
在本地機器生成ssh金鑰,並新增到windows10機器的authorized_keys中
所謂本地機器是指開發時git本地倉庫所在的機器。本地機器想要連線到在PC上建立的git遠端倉庫,需要通過金鑰進行身份驗證。我們要做的是在本地機器上生成ssh金鑰對,並將公鑰新增到 win10 ssh服務的授權金鑰檔案(/etc/ssh/authorized_keys)裡。下面以本地機器為Ubuntu系統為例示範此過程(如果本地機器也是windows系統可以在powershell中執行相同命令)。 在本地機器上,開啟終端,輸入:
cd ~/.ssh
ssh-keygen git_key
會得到一對公私金鑰。將私鑰 git_key 保留,將公鑰 git_key.pub 用scp命令拷貝至PC使用者git的home目錄下:
sudo tcp -P 2200 [email protected]:~/
在 /home/git/ 下找到 git_key.pub 檔案,將其中內容複製貼上到 /etc/ssh/authorized_keys中 (若名為authorized_keys的檔案不存在,就新建一個)。之後重啟ssh服務:
sudo service ssh restart
建立git本地倉庫並連線到win10上的遠端倉庫
在本地機器上進入想要建庫的資料夾,比如 ~/workspace;用git clone命令來把遠端倉庫克隆到本地,用到的命令格式為: sudo git clone ssh://<PC_PrivateIP>:<sshd_port><path_to_remote_repo> 本例中,具體為:
cd ~/workspace
sudo git clone ssh://192.168.1.104:2200/mnt/e/MyRemoteGitRepo
到此應該會在終端裡看到git進行了克隆,並報告一個資訊 “warning: You appear to have cloned an empty repository.”, 這是因為我們並未在遠端倉庫上建立任何東西的原因,但是PC端的git遠端倉庫已經搭建好並且成功克隆到了本地!