[教學] git應用-git主機換位置了 - 討論區

[教學] git應用-git主機換位置了

文章瀏覽次數 2610 文章回覆數 1

特種兵

特種兵圖像(預設)

2020-07-11 11:36:54

From:211.23.21.202

背景與問題

原本公司的內部系統只架在內部

如果想從外部 git 取得程式碼是不行的

但有時緊急狀況或想在假日寫程式怎麼辦

後來就在內部系統的主機的另外一張網卡設定公司另外一組對外 ip 讓外部 ssh 使用

然後在主機防火牆加入允許家裡的 ip 可以連線與轉 port 等等

不過這不是我們這篇的重點

最近我們架設了 vpn 可以讓特定的使用者從外部連進內部

所以我把主機的對外 ip 關了

在家直接使用 vpn 連進內部

問題來了,我們知道 git 背後是用 ssh 在連線,至少我是這樣設定

之前設定了 ssh 連線是對外 ip 但現在 vpn 進來後是要連協會內部 ip

就當成自己是在協會內部進行作業

所以對外ip 關掉以後,不改設定 ssh 就連不上了

當然 git 也沒辦法使用了

改遠端 ip

所以我們要把 git 的 ssh 連線 ip 改成對內 ip

在專案資料夾下找到 .git 資料夾,使用編輯器開啟檔案 config

找這一段:

[remote "origin"]
	url = logo@140.114.34.8:/xxx/yyy

改成對內 ip:

[remote "origin"]
	url = logo@192.168.0.77:/xxx/yyy

更新加密 key

存檔後連線會發現還是連不上

想把專案拉回來

$ git pull origin master
 ssh: connect to host 192.168.0.77 port 22: Connection timed out                 
 fatal: Could not read from remote repository.                                   

 Please make sure you have the correct access rights                             
 and the repository exists.                                                      

如果確定 ip 跟路徑都打正確,那就是 ssh 的加密 key 需要更新

網路上有很多做法,我認為最簡單的就是直接用 ssh 手動連線一次,順便確保帳號、密碼、位置等都是對的

這裡要用的 ssh 命令就在我們安裝 git 到系統裡就已經提供,而且也被加入系統路徑了

事實上他跟 git 命令是在同一個路徑,所以可以在 git bash 下使用 git 就一定能用 ssh

那我們用 ssh 手動連一下內部系統的主機:

$ ssh logo@192.168.0.77
 logo@192.168.0.77's password:                                                    

輸入密碼登入後看到提示符號輸入 exit 按 enter 離開

這表示 ssh 連線都沒問題了

那這樣這個位置的連線資訊就會被 ssh 記下來,包括驗證 key 等等

接著我們再次拉回專案看看:

$ git pull origin master                                                        
 logo@192.168.0.77's password: 輸入密碼                                                    
 remote: Enumerating objects: 167, done.                                         
 remote: Counting objects: 100% (167/167), done.                                 
 remote: Compressing objects: 100% (147/147), done.                              
 remote: Total 148 (delta 110), reused 1 (delta 1)                               
 Receiving objects: 100% (148/148), 38.78 KiB | 4.31 MiB/s, done.                
 Resolving deltas: 100% (110/110), completed with 19 local objects.              
 From 192.168.0.77:/xxx/yyy                                                      
  * branch            master     -> FETCH_HEAD                                   
    a9259f6..eee507f  master     -> origin/master                                
 Updating a9259f6..eee507f                                                       
 Fast-forward                                                                    
  controllers/Controller.php                    |   6 +-                         
# 接著就是一堆更改的檔案列表,略過
  views/Views.php                               |   6 +                          
  24 files changed, 1094 insertions(+), 386 deletions(-)                         

成功了,更新了數十個檔案,一千多行,可見很久沒在家作業了

今天懶得去公司,昨天寫的功能還沒加註解,想在家補上

留言

#1

阿慶

阿慶圖像

2020-07-13 10:13:14

From:211.23.21.202

我之前也有這個需求
不過我是找指令改的 git remote set-url origin xxxurl
反而沒想到從設定黨去改