Git輕松入門3:遠程倉庫篇


第一講中,我們有介紹過:Git是分布式版本控制系統。每個人的電腦上都有一份完整的版本庫。當對項目作出了修改后,只要把修改推送給對方即可。但很有可能的情況是:兩台電腦不在一個局域網內,無法互相訪問;或者是你倆工作時間不一樣,你上日班,他上夜班,兩人很難找到時間連接到對方的電腦去推送修改。

所以在實際使用分布式版本控制系統時,是有一台電腦充當服務器的角色。這樣,當我們有了修改時直接把修改提交到服務器的倉庫里。其他人若是想獲取這次修改,直接從服務器倉庫中拉取即可。

而GitHub就扮演着這個服務器倉庫的角色。你需要先注冊一個GitHub賬號,配置好你電腦的SSH Key(如何配置SSH Key?),因為Github是支持SSH協議的,所以有了該密鑰后,當從你電腦上的倉庫往GitHub倉庫推送時,GitHub就能識別出你推送的提交確實是你推送的,而不是別人冒充的。而有些同學有多台電腦,他們一會從公司的電腦上傳,一會從家里的電腦上傳,這就需要配置多個密鑰對。

配置好SSH Key后,再新建一個GitHub倉庫,你的遠程倉庫就建立完畢。

與遠程倉庫建立連接

在本地倉庫下運行以下指令可以與遠程倉庫建立連接。只要建立好這一次連接后,以后本地倉庫和遠程倉庫就可以愉快方便地玩耍了~

$ git remote add [remote-alias] [remote-url] 

其中 remote-url 指的是遠程倉庫的地址;remote-alias 指的是給該遠程倉庫起的外號,這樣以后有什么事要找它直接喊它外號就可以了(通常,系統會默認給它起外號叫origin)。

  • 以后想換外號的話,用 $ git remote rename [old-name] [new-name]
  • 本地倉庫若想和遠程倉庫絕交(斷開連接),用 $ git remote rm [remote-alias]
  • 要查看現在和哪些倉庫建立連接了,用 $ git remote。若添加-v參數,可以看到具體是往遠程倉庫的哪個地址fetch數據過來以及是往遠程倉庫的哪個地址push數據過去。

實戰如下:

克隆遠程倉庫

當我們想要把遠程倉庫的內容下載到我們本地電腦時,用下面指令。

git clone [remote-url]

實戰如下:

注意到:當使用該命令時,Git會自行幫你添加該遠程倉庫。

提取遠程倉庫的內容

# 獲取遠程倉庫所有分支的更新
$ git fetch [remote-alias]

# 將某更新的分支合並到當前分支
$ git merge [remote-alias]/[remote-branch]

當fetch了遠程倉庫的更新后,我們在本地就擁有了遠程倉庫中所有分支的引用,如 origin/div1origin/main。我們可以隨時查看或合並。合並的命令就和之前在分支篇介紹的一樣。

例如當遠程倉庫中的屬於 main 分支的 README.md 文件和屬於 div1分支中的 div1.txt 文件有了更新后,利用上述命令,我們就可以把這兩個文件的更新合並到本地。

當然,$ git fetch$ git merge 命令可以簡化成下面一條:

# 從遠程倉庫的某分支獲取代碼並與本地倉庫中的某分支合並
$ git pull [remote-alias] [remote-branch-name]:[local-branch-name]

若合並的是當前分支,那么冒號后面的內容可以省略,即為:

$ git pull [remote-alias] [remote-branch-name]

推送到遠程倉庫

當你想把你的項目放到遠程倉庫時,你可以使用如下命令:

# 把本地倉庫的某分支推送到遠程倉庫的同名分支里
$ git push [remote-alias] [branch-name]

例如:當我們對 div1 分支里的 div1.txt 文件作出修改后,我們想把這次修改推送到遠程倉庫。

這時,再打開Github中我們的遠程倉庫,就可以看到修改已被推送完畢。

注意:只有當你有遠程倉庫的寫入權限,並且在你進行本次推送前,沒人有再進行過推送了,該命令才可生效。例如你和你的同事正在合力開發一個新的項目,你的同事在一秒前把他們的工作推送到上游了,那么此時你再推送就會被拒絕。你必須先把剛剛他們的推送拉取下來,合並進你的工作后才能推送。

參考

  1. http://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes

 
有問題歡迎大家在評論區留言,轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM