Remote repository
Git repository 除了本機以外,還可以是遠端 repository ,例如雲端 GitHub、Gitlab、Bitbucket,或者自架的 Git Server。
作為版本控制用途,Remote repository 不是必要的,除非想要多人協作開發共同的專案。
Clone from remote repo.
# Specified version
git clone -b 8.3.0 https://github.com/OpenSIPS/opensips-cp.git /var/www/opensips-cp
Git remote
從遠端儲存庫下載專案或要推送本地專案至遠端儲存庫時,用來檢視、修改遠端儲存庫位址。
# Show the configuration of the remote repository
git remote -v
origin https://github.com/a-lang/sshto.git (fetch)
origin https://github.com/a-lang/sshto.git (push)
# Get more information
git remote show origin
* 遠端 origin
取得位址:https://github.com/a-lang/sshto.git
推送位址:https://github.com/a-lang/sshto.git
HEAD 分支:master
遠端分支:
master 已追蹤
為 'git pull' 設定的本機分支:
master 與遠端 master 合併
為 'git push' 設定的本機引用:
master 推送至 master (最新)
Push
將本機 repository 的更新推送到遠端 Git server
git push
Pull
拉取遠端 Git server 的更新至本機 repository
cd my_proj
git pull
避免每次詢問密碼
輸入一次密碼,可以暫存系統 15 分鐘
git config --global credential.helper cache
SSH Key Authentication
# 建立 ssh-key
# 預設路徑: ~/.ssh/id_rsa (private key) , ~/.ssh/id_rsa.pub (public-key)
ssh-keygen -t rsa -b 4096 -C "alang@my-linux-desktop"
# Gitlab 網站匯入 public ssh-key
# 測試 ssh key authentication
# 如果輸出 Welcome to GitLab, @alang! 表示連線認證成功
ssh -T git@gitlab.shurafom.eu
# 下載專案
# NOTE: 位址必須是 git@XXX.xxx.xxx 開頭。
# 如果使用 https:// 則必須改用 Personal Token 認證方式
git clone git@gitlab.shurafom.eu:myproject/myprog.git
Fetch new changes
Git 本地庫與遠端庫並不會自動保持同步,而是用指令 git fetch
手動將遠端庫的所有 branches 異動 (commit) 紀錄更新至本地端。注意:這不會更動本地庫的 branches 資料(與 git pull
不同)
如何知道遠端儲存庫有其他更新?
git remote show origin
* remote origin
Fetch URL: https://github.com/redquinoa/health-checks.git
Push URL: https://github.com/redquinoa/health-checks.git
HEAD branch: master
Remote branch:
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (local out of date)
這行 master pushes to master (local out of date) 表示遠端庫有其他的更新。
更新遠端庫 branches 紀錄至本地端
git fetch