快速入門Git教程login
快速入門Git教程
作者:php.cn  更新時間:2022-04-11 13:44:34

Git 遠端倉庫


Git 並不像 SVN 那樣有個中心伺服器。

目前我們使用到的 Git 指令都是在本地執行,如果你想透過 Git 分享你的程式碼或與其他開發人員合作。 你就需要將資料放到一台其他開發人員能夠連線的伺服器上。

本範例使用了 Github 作為遠端倉庫,你可以先閱讀我們的 Github 簡明教學。


新增遠端庫

要新增一個新的遠端倉庫,可以指定一個簡單的名字,以便將來引用,命令格式如下:

git remote add [shortname] [url]

本範例以Github為例作為遠端倉庫,如果你沒有Github可以在官網https://github.com/註冊。


因為你的本地Git倉庫和GitHub倉庫之間的傳輸是透過SSH加密的,所以我們需要設定驗證訊息:

使用以下指令產生SSH Key:

$ ssh-keygen -t rsa -C "youremail@example.com"

後面的your_email@youremail.com改為你在github上註冊的郵箱,之後會要求確認路徑和輸入密碼,我們這使用預設的一路回車就行。成功的話會在~/下產生.ssh資料夾,進去,打開id_rsa.pub,複製裡面的key。

回到github上,進入 Account Settings(帳號設定),左邊選擇SSH Keys,Add SSH Key,title隨便填,貼在你電腦上產生的key。

為了驗證是否成功,輸入以下指令:

$ ssh -T git@github.com
Hi tianqixin! You've successfully authenticated, but GitHub does not provide shell access.

以下指令說明我們已成功連上 Github。

之後登入後點選" New repository " 如下圖:

之後在Repository name 填入 w3cschool.cc(遠端倉庫名稱) ,其他保持預設設置,點擊"Create repository"按鈕,就成功地創建了一個新的Git倉庫:

##創建成功後,顯示如下資訊:

以上資訊告訴我們可以從這個倉庫克隆出新的倉庫,也可以把本地倉庫的內容推送到GitHub倉庫。

現在,我們根據GitHub的提示,在本地的倉庫下運行命令:

$ ls
README
w3cschoolphp中文网测试.txt
test.txt
$ git remote add origin git@github.com:tianqixin/w3cschool.cc.git
$ git push -u origin master
Counting objects: 21, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (15/15), done.
Writing objects: 100% (21/21), 1.73 KiB | 0 bytes/s, done.
Total 21 (delta 4), reused 0 (delta 0)
To git@github.com:tianqixin/w3cschool.cc.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.

以下命令請根據你在Github成功創建新倉庫的地方複製,而不是根據我提供的指令,因為我們的Github使用者名稱不一樣,倉庫名稱也不一樣。

接下來我們回到Github 建立的倉庫,就可以看到檔案上傳到Github上:


查看目前的遠端函式庫

要查看目前設定有哪些遠端倉庫,可以用指令:

git remote
$ git remote
origin
$ git remote -v
origin	git@github.com:tianqixin/w3cschool.cc.git (fetch)
origin	git@github.com:tianqixin/w3cschool.cc.git (push)

執行時加上-v 參數,你也可以看到每個別名的實際連結位址。


提取遠端倉庫

Git 有兩個指令用來提取遠端倉庫的更新。

1、從遠端倉庫下載新分支與資料:

git fetch

該指令執行完後需要執行git merge 遠端分支到你所在的分支。

2、從遠端倉庫提取資料並嘗試合併到當前分支:

git pull

該命令就是在執行 git fetch 之後緊接著執行 git merge 遠端分支到你所在的任意分支。

假設你配置了一個遠端倉庫,並且你想要提取更新的數據,你可以先執行 git fetch [alias] 告訴Git 去獲取它有你沒有的數據,然後你可以執行git merge [alias]/[branch] 以將伺服器上的任何更新(假設有人這時候推送到伺服器了)合併到你的當前分支。

接下來我們在 Github 上點擊"w3cschoolphp中文網測試.txt" 並在線上修改它。之後我們在本地更新修改。

$ git fetch origin
Warning: Permanently added the RSA host key for IP address '192.30.252.128' to the list of known hosts.
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From github.com:tianqixin/w3cschool.cc
   7d2081c..f5f3dd5  master     -> origin/master

上述資訊"7d2081c..f5f3dd5  master     -> origin/master" 說明master 分支已更新,我們可以使用以下指令將更新同步到本地:

$ git merge origin/master
Updating 7d2081c..f5f3dd5
Fast-forward
 "w3cschool074107651703653075.txt" | 1 +
 1 file changed, 1 insertion(+)

#推送到遠端倉庫

推送你的新分支與資料到某個遠端倉庫指令:

git push [alias] [branch]

以上指令將你的[branch] 分支推送成為[alias] 遠端倉庫上的[branch] 分支,實例如下。

$ git merge origin/master
Updating 7d2081c..f5f3dd5
Fast-forward
 "w3cschool074107651703653075.txt" | 1 +
 1 file changed, 1 insertion(+)
bogon:w3cschoolcc tianqixin$ vim w3cschoolphp中文网测试.txt 
bogon:w3cschoolcc tianqixin$ git push origin master
Everything up-to-date

刪除遠端倉庫

刪除遠端倉庫你可以使用指令:

git remote rm [别名]
$ git remote -v
origin	git@github.com:tianqixin/w3cschool.cc.git (fetch)
origin	git@github.com:tianqixin/w3cschool.cc.git (push)
$ git remote add origin2 git@github.com:tianqixin/w3cschool.cc.git
$ git remote -v
origin	git@github.com:tianqixin/w3cschool.cc.git (fetch)
origin	git@github.com:tianqixin/w3cschool.cc.git (push)
origin2	git@github.com:tianqixin/w3cschool.cc.git (fetch)
origin2	git@github.com:tianqixin/w3cschool.cc.git (push)
$ git remote rm origin2
$ git remote -v
origin	git@github.com:tianqixin/w3cschool.cc.git (fetch)
origin	git@github.com:tianqixin/w3cschool.cc.git (push)

PHP中文網