碼云 創建遠程倉庫并與本地倉庫關聯

一、創建版本庫

1、選擇一個合適的地方,創建一個空目錄:

$ mkdir xxx
$ cd xxx
$ pwd
/Users/kiki/Desktop/xxx

pwd命令用于顯示當前目錄。在我的Mac上,這個倉庫位于/Users/kiki/Desktop/xxx。
如果你使用Windows系統,為了避免遇到各種莫名其妙的問題,請確保目錄名(包括父目錄)不包含中文。

2、通過git init命令把這個目錄變成Git可以管理的倉庫:

$ git init
Initialized empty Git repository in /Users/kiki/Desktop/xxx/.git/

瞬間Git就把倉庫建好了,而且告訴你是一個空的倉庫(empty Git repository),細心的讀者可以發現當前目錄下多了一個.git的目錄,這個目錄是Git來跟蹤管理版本庫的,沒事千萬不要手動修改這個目錄里面的文件,不然改亂了,就把Git倉庫給破壞了。

如果你沒有看到.git目錄,那是因為這個目錄默認是隱藏的,用ls -ah命令就可以看見。

也不一定必須在空目錄下創建Git倉庫,選擇一個已經有東西的目錄也是可以的。不過,不建議你使用自己正在開發的公司項目來學習Git,否則造成的一切后果概不負責。

把文件添加到版本庫

現在我們編寫一個readme.txt文件,內容如下:

Git is a version control system.
Git is free software.

一定要放到learngit目錄下(子目錄也行),因為這是一個Git倉庫,放到其他地方Git再厲害也找不到這個文件。

把一個文件放到Git倉庫只需要兩步:

第一步,用命令git add告訴Git,把文件添加到倉庫:

$ git add readme.txt

執行上面的命令,沒有任何顯示,這就對了,Unix的哲學是“沒有消息就是好消息”,說明添加成功。

第二步,用命令git commit告訴Git,把文件提交到倉庫:

$ git commit -m "wrote a readme file"
[master (root-commit) eaadf4e] wrote a readme file
 1 file changed, 2 insertions(+)
 create mode 100644 readme.txt

簡單解釋一下git commit命令,-m后面輸入的是本次提交的說明,可以輸入任意內容,當然最好是有意義的,這樣你就能從歷史記錄里方便地找到改動記錄。
git commit命令執行成功后會告訴你,1 file changed:1個文件被改動(我們新添加的readme.txt文件);2 insertions:插入了兩行內容(readme.txt有兩行內容)。

為什么Git添加文件需要add,commit一共兩步呢?因為commit可以一次提交很多文件,所以你可以多次add不同的文件,比如:

$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."
疑難解答

Q:輸入git add readme.txt,得到錯誤:fatal: not a git repository (or any of the parent directories)。

A:Git命令必須在Git倉庫目錄內執行(git init除外),在倉庫目錄外執行是沒有意義的。

Q:輸入git add readme.txt,得到錯誤fatal: pathspec 'readme.txt' did not match any files。

A:添加某個文件時,該文件必須在當前目錄下存在,用ls或者dir命令查看當前目錄的文件,看看文件是否存在,或者是否寫錯了文件名。

小結

現在總結一下今天學的兩點內容:

初始化一個Git倉庫,使用git init命令。

添加文件到Git倉庫,分兩步:

使用命令git add <file>,注意,可反復多次使用,添加多個文件;簡單操作使用git add *命令,將文件全部添加。
使用命令git commit -m <message>,完成。

二、添加遠程庫

現在的情景是,你已經在本地創建了一個Git倉庫后,又想在gitee創建一個Git倉庫,并且讓這兩個倉庫進行遠程同步,這樣,gitee上的倉庫既可以作為備份,又可以讓其他人通過該倉庫來協作,真是一舉多得。

首先,登陸gitee,然后,在左側欄中找到“倉庫”“+”按鈕,創建一個新的倉庫:

image.png

目前,在gitee上的這個xxx倉庫還是空的,gitee告訴我們,可以從這個倉庫克隆出新的倉庫,也可以把一個已有的本地倉庫與之關聯,然后,把本地倉庫的內容推送到gitee倉庫。

在創建遠程倉庫時沒有生成readme文件時,創建成功后會提示以下圖片中的命令行,直接按順序執行即可。

WeChatefb3ebabee42749595d016590a405d18.png

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

$ git remote add origin https://gitee.com/kkk/xxx.git

請千萬注意,把上面的kkk替換成你自己的gitee賬戶名,否則,你在本地關聯的就是我的遠程庫,關聯沒有問題,但是你以后推送是推不上去的,因為你的SSH Key公鑰不在我的賬戶列表中。

添加后,遠程庫的名字就是origin,這是Git默認的叫法,也可以改成別的,但是origin這個名字一看就知道是遠程庫。

下一步,就可以把本地庫的所有內容推送到遠程庫上:

$ git push -u origin master
Counting objects: 20, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (15/15), done.
Writing objects: 100% (20/20), 1.64 KiB | 560.00 KiB/s, done.
Total 20 (delta 5), reused 0 (delta 0)
remote: Resolving deltas: 100% (5/5), done.
To github.com:michaelliao/learngit.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分支關聯起來,在以后的推送或者拉取時就可以簡化命令。

推送成功后,可以立刻在gitee頁面中看到遠程庫的內容已經和本地一模一樣。從現在起,只要本地作了提交,就可以通過命令:

$ git push origin master

把本地master分支的最新修改推送至gitee,現在,你就擁有了真正的分布式版本庫!

SSH警告

當你第一次使用Git的clone或者push命令連接gitee時,會得到一個警告:

The authenticity of host 'gitee.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?

這是因為Git使用SSH連接,而SSH連接在第一次驗證gitee服務器的Key時,需要你確認gitee的Key的指紋信息是否真的來自gitee的服務器,輸入yes回車即可。

Git會輸出一個警告,告訴你已經把gitee的Key添加到本機的一個信任列表里了:

Warning: Permanently added 'gitee.com' (RSA) to the list of known hosts.

這個警告只會出現一次,后面的操作就不會有任何警告了。

刪除遠程庫

如果添加的時候地址寫錯了,或者就是想刪除遠程庫,可以用git remote rm <name>命令。使用前,建議先用git remote -v查看遠程庫信息:

$ git remote -v
origin  https://gitee.com/kkk/xxx.git (fetch)
origin  https://gitee.com/kkk/xxx.git (push)

然后,根據名字刪除,比如刪除origin

$ git remote rm origin

此處的“刪除”其實是解除了本地和遠程的綁定關系,并不是物理上刪除了遠程庫。遠程庫本身并沒有任何改動。要真正刪除遠程庫,需要登錄到gitee,在后臺頁面找到刪除按鈕再刪除。

小結

要關聯一個遠程庫,使用命令git remote add origin https://gitee.com/user name/project name.git

關聯一個遠程庫時必須給遠程庫指定一個名字,origin是默認習慣命名;

關聯后,使用命令git push -u origin master第一次推送master分支的所有內容;

此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

分布式版本系統的最大好處之一是在本地工作完全不需要考慮遠程庫的存在,也就是有沒有聯網都可以正常工作,而SVN在沒有聯網的時候是拒絕干活的!當有網絡的時候,再把本地提交推送一下就完成了同步,真是太方便了!

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容