Git-遠端倉庫
一、新增遠端倉庫
第一步,先在Github上新增一個遠端倉庫,倉庫名:learngit
第二步,在本地的learngit
倉庫下執行命令:
git remote add origin [email protected]:testGroup/test-marketing-testcase.git
新增後,遠端庫的名字就是origin
,這是Git預設的叫法,也可以改成別的,但是origin
這個名字一看就知道是遠端庫
第三步,把本地庫的所有內容推送到遠端庫上:
git push -u origin master
在執行第三步的命令時,遇到如下問題:
git push -u origin master @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the ECDSA key sent by the remote host is SHA256:n29q+bmAVXjmN3nfxXEgCEpVEMltPqhZR0Jeehrj2ug. Please contact your system administrator. Add correct host key in /Users/chichi/.ssh/known_hosts to get rid of this message. Offending ECDSA keyin /Users/chichi/.ssh/known_hosts:11 ECDSA host key for git.xxxxxx-inc.com has changed and you have requested strict checking. Host key verification failed. fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists.
解決方法:
以編輯器的方式進入以下檔案:
vi /Users/chichi/.ssh/known_hosts
刪除 git.xxxxxx-inc.com 相關的部分。
第四步,刪除成功後, 再次把本地庫的所有內容推送到遠端庫上:
➜ testcase git:(master) ✗ git push -u origin master
Counting objects: 23, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (18/18), done.
Writing objects: 100% (23/23), 1.85 KiB | 0 bytes/s, done.
Total 23 (delta 6), reused 0 (delta 0)
To [email protected]:testGroup/test-marketing-testcase.git
* [new branch] master -> master
Branch master set up to track remote branch master from origin.
把本地庫的內容推送到遠端,用git push
命令,實際上是把當前分支master
推送到遠端。
由於遠端庫是空的,我們第一次推送master
分支時,加上了-u
引數,Git不但會把本地的master
分支內容推送的遠端新的master
分支,還會把本地的master
分支和遠端的master
分支關聯起來,在以後的推送或者拉取時就可以簡化命令。
推送成功後,可以立刻在GitHub頁面中看到遠端庫的內容已經和本地一模一樣。
第五步,從現在起,只要本地作了提交,就可以通過命令把本地master
分支的最新修改推送至GitHub:
git push origin master
小結
要關聯一個遠端庫,使用命令git remote add origin [email protected]:path/repo-name.git
;
關聯後,使用命令git push -u origin master
第一次推送master分支的所有內容;
此後,每次本地提交後,只要有必要,就可以使用命令git push origin master
推送最新修改;
二、從遠端庫克隆
上文介紹了先有本地庫,後有遠端庫的時候,如何關聯遠端庫。
現在,假設我們從零開發,那麼最好的方式是先建立遠端庫,然後,從遠端庫克隆。
第一步,建立一個專案,如test-marketing-testcase
第二步,在本地新增一個資料夾,然後進入這個目錄,用命令git clone
克隆一個本地庫:
➜ testcase git:(master) cd /Users/chichi/Documents/gittest ➜ gittest git clone [email protected]-inc.com:testGroup/test-marketing-testcase.git Cloning into 'test-marketing-testcase'... remote: Enumerating objects: 45, done. remote: Counting objects: 100% (45/45), done. remote: Compressing objects: 100% (37/37), done. remote: Total 45 (delta 15), reused 0 (delta 0) Receiving objects: 100% (45/45), 485.71 KiB | 0 bytes/s, done. Resolving deltas: 100% (15/15), done. Checking connectivity... done.
可以在本地看到gittest資料夾裡的內容已經和遠端庫裡的一模一樣了。
GitHub給出的地址不止一個,還可以用https://git.xxxx-inc.com/testGroup/test-marketing-testcase.git這樣的地址。實際上,Git支援多種協議,預設的git://
使用ssh,但也可以使用https
等其他協議。
使用https
除了速度慢以外,還有個最大的麻煩是每次推送都必須輸入口令,但是在某些只開放http埠的公司內部就無法使用ssh
協議而只能用https
。
小結
要克隆一個倉庫,首先必須知道倉庫的地址,然後使用git clone
命令克隆。
Git支援多種協議,包括https
,但通過ssh
支援的原生git
協議速度最快。