鍍金池/ 教程/ Java/ 添加遠程庫
操作標簽
多人協(xié)作
解決沖突
Git 的誕生
工作區(qū)和暫存區(qū)
搭建 Git 服務器
Bug 分支
配置別名
從遠程庫克隆
分支
添加遠程庫
分支管理策略
撤銷修改
安裝 Git
管理修改
生成 SSH key
GitHub
倉庫狀態(tài)
忽略特殊文件
刪除文件
Feature 分支
創(chuàng)建與合并分支
創(chuàng)建版本庫
創(chuàng)建標簽
版本回退
集中式 vs 分布式

添加遠程庫

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

首先,登陸 GitHub,然后,在右上角找到“Create a new repo”按鈕,創(chuàng)建一個新的倉庫:

http://wiki.jikexueyuan.com/project/git-tutorial/images/add.png" alt="" />

在 Repository name 填入 learngit,其他保持默認設置,點擊“Create repository”按鈕,就成功地創(chuàng)建了一個新的 Git 倉庫:

http://wiki.jikexueyuan.com/project/git-tutorial/images/git14.png" alt="" />

目前,在 GitHub 上的這個 learngit 倉庫還是空的,GitHub 告訴我們,可以從這個倉庫克隆出新的倉庫,也可以把一個已有的本地倉庫與之關聯(lián),然后,把本地倉庫的內(nèi)容推送到 GitHub 倉庫。

現(xiàn)在,我們根據(jù) GitHub 的提示,在本地的 learngit 倉庫下運行命令:

$ git remote add origin git@github.com:michaelliao/learngit.git

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

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

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

$ git push -u origin master
Counting objects: 19, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (19/19), done.
Writing objects: 100% (19/19), 13.73 KiB, done.
Total 23 (delta 6), reused 0 (delta 0)
To git@github.com:michaelliao/learngit.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.

把本地庫的內(nèi)容推送到遠程,用git push命令,實際上是把當前分支 master 推送到遠程。

由于遠程庫是空的,我們第一次推送 master 分支時,加上了-u參數(shù),Git 不但會把本地的 master 分支內(nèi)容推送的遠程新的 master 分支,還會把本地的 master 分支和遠程的 master 分支關聯(lián)起來,在以后的推送或者拉取時就可以簡化命令。

推送成功后,可以立刻在 GitHub 頁面中看到遠程庫的內(nèi)容已經(jīng)和本地一模一樣:

http://wiki.jikexueyuan.com/project/git-tutorial/images/git15.png" alt="" />

從現(xiàn)在起,只要本地作了提交,就可以通過命令:

$ git push origin master 把本地master分支的最新修改推送至GitHub,現(xiàn)在,你就擁有了真正的分布式版本庫!

SSH 警告

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

The authenticity of host 'github.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 連接在第一次驗證 GitHub 服務器的 Key 時,需要你確認 GitHub 的 Key 的指紋信息是否真的來自 GitHub 的服務器,輸入 yes 回車即可。

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

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

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

如果你實在擔心有人冒充 GitHub 服務器,輸入 yes 前可以對照 GitHub 的 RSA Key 的指紋信息是否與 SSH 連接給出的一致。

小結(jié)

要關聯(lián)一個遠程庫,使用命令git remote add origin git@server-name:path/repo-name.git

關聯(lián)后,使用命令git push -u origin master第一次推送 master 分支的所有內(nèi)容;

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

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