1. 程式人生 > >Git-遠端倉庫

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 key
in /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協議速度最快。