Git學習筆記(6): 本地庫管理遠程庫(GitHub)——push, clone, pull操作

在這裏插入圖片描述


注:轉載請標明原文出處鏈接:https://xiongyiming.blog.csdn.net/article/details/106153902


本地庫(Git倉庫)可以管理遠程庫(GitHub),一般地操作有pull, clone 和pull 操作,在實際協作開發項目是一般會有兩種情況:

第一種是團隊之間互相認識,共同開發項目。這樣可以建立私人項目或者公開項目,然後邀請項目成員共同開發,這樣其他人將看不到團隊的項目。
例如:如下圖所示,開發者A在GitHub上新建倉庫,接着新建一個分支然後邀請團隊成員開發者B在這個分支上提交代碼。開發者B在本地庫寫好的項目代碼推送到遠程庫的分支上,然後可以發送請求給開發者A,要求審覈代碼併合並分支,開發者A可以將代碼拉取下來查看。如果覺得代碼可以,那麼直接合並代碼即可,如果覺得代碼不可以,要求開發者B進行修改知道合格爲止。

第二種是開源的項目,全網都可以看到,任何開發者都可以對你的項目提出建議和修改,達到共同開發的目的。
例如:如下圖所示,開發者A在GitHub上新建倉庫,然後開發者C在GitHub上無意間看到了這個倉庫,覺得挺好就Fork該倉庫,於是開發者C就會出現該倉庫。開發者C將這個倉庫拉取(pull)本地庫進行改進然後推送(push)到自己的遠程庫上,此時開發者A的倉庫不會變化。
如果開發者C想要將自己的代碼合併到開發者倉庫中就要提出請求,然後開發者A進行審覈,如果通過開發者A覺得可以就進行合併。

在這裏插入圖片描述


以上兩種情況和GitHub協同開發基本類似,不同的是本地庫和遠程庫之間需要進行拉取(pull)和推送(push)操作,pull和push操作也是本地庫管理遠程庫的關鍵。下面就簡單介紹本地庫文件推送(push)到遠程庫、遠程庫文件拉取(pull)到本地庫等基本操作。




1 本地庫和遠程庫

本地庫就是開發者將文件提交到Git倉庫,此時Git倉庫文件還在本地電腦。通過Git倉庫可以管理GitHub遠程倉庫,例如Git倉庫可以推送到GitHub倉庫上,共享到社區,其他開發者可以看到這個倉庫,然後可以提出Bug和改進建議達到共同開發的目的。


(1) 建立本地庫

開發者A新建develop_A文件夾,然後通過git命令初始化,接着新建test_hello.cpp文件提交到本地庫。如下圖所示:

在這裏插入圖片描述



(2) 建立遠程庫

開發者A在GitHub上新建一個項目(teamwork), 如下圖所示:

在這裏插入圖片描述


如下圖所示,複製teamwork倉庫地址:https://github.com/luohuayouyi666/teamwork.git

在這裏插入圖片描述




2 本地庫管理遠程庫的基本操作

2.1 本地庫推送(push)到遠程庫(GitHub)


本地庫推送到遠程庫命令格式爲:git push origin分支名


現在開發者A將本地庫推送到GitHub倉庫上, 由前面的操作可知,teamwork倉庫的地址爲:
https://github.com/luohuayouyi666/teamwork.git

由於地址太長不太好操作,可以用一個簡單的名稱(別名origin)代替復較長的地址,
起別名的命令爲格式爲:git remote add origin 遠程庫地址

例如:git remote add origin https://github.com/luohuayouyi666/teamwork.git 如下圖所示,還可以通過命令:git remote -v 查看當前的別名 判斷新名稱(別名)是否更新成功。


在這裏插入圖片描述


注意:
更改遠程地址別名命令:git remote add origin GitHub倉庫地址
刪除本地指定的遠程地址別名命令:git remote remove origin


例如使用命令:git push origin master 表示將本地庫master分支下文件推送到遠程庫
執行命令後,如下圖所示,推送報錯,是因爲遠程庫一個README.md文件在本地庫沒有,此時需要將遠程庫README.md拉取(pull)到本地庫(更新),然後再推送到遠程庫。


在這裏插入圖片描述


網上查詢的解決辦法,執行命令:git pull origin master --allow-unrelated-histories 結果如下圖所示:

在這裏插入圖片描述


接下來將本地庫推送到遠程庫,結果如下圖所示:

在這裏插入圖片描述


此時刷新網頁,查看GitHub倉庫有沒有更新文件,如下圖所示,文件成功的從本地庫提交到遠程庫。

在這裏插入圖片描述



2.2 遠程庫克隆(clone)到本地庫


遠程庫克隆(clone)到本地庫命令格式爲:git clone 遠程倉庫地址

任何開發者都可以將GitHub上的開源的項目克隆到本地倉庫。例如,前面操作的遠程倉庫有了兩個文件,如下圖所示:


在這裏插入圖片描述


下面新建文件夾test_clone文件夾,使用命令:git clone 遠程倉庫地址 將遠程倉庫文件下載下來,如下圖所示:

在這裏插入圖片描述


遠程庫克隆到本地庫的效果:

  1. 完整的把遠程庫下載到本地庫;
  2. 初始化本地庫;

2.3 遠程庫拉取(pull)到本地庫


遠程庫拉取(pull)到本地庫命令格式爲: git pull origin master ,origin爲遠程庫地址的別名。

將遠程庫文件更新到本地庫,本地工作區文件將會更新,如果本地有和遠程庫同名的文件,將會強制更新本地庫文件。

例如新建test_pull文件,新建123.txt文件,然後提交到本地庫,如下圖所示:

在這裏插入圖片描述


將遠程庫地址更改別名(git remote add origin 遠程庫地址),然後執行命令:git pull origin master

在這裏插入圖片描述


此時發現,pull失敗,因爲本地庫有和遠程庫不相同的文件,此時可以通過命令:git pull origin master --allow-unrelated-histories 強制拉取(pull)

在這裏插入圖片描述


下面將本地庫文件全部推送到遠程庫,命令爲:git push origin master ,結果如下圖所示

在這裏插入圖片描述


此時刷新網頁,查看GitHub倉庫中123.txt文件成功的從本地庫提交到遠程庫,如下圖所示:

在這裏插入圖片描述


假設在GitHub倉庫中更改文件內容,此時本地庫內容沒有變,現在然後從將遠程庫拉取(pull)到本地庫,看看會不會強制更新本地庫文件內容。

在這裏插入圖片描述


在這裏插入圖片描述


在這裏插入圖片描述


在這裏插入圖片描述


由上圖可以看出,遠程庫123.txt文件被修改,此時將遠程庫拉取到本地庫,執行命令:git pull origin master ,結果如下圖所示,本地庫123.txt文件被更新了。

在這裏插入圖片描述


當然也可以通過命令: git fetch origin master 將遠程庫文件抓取到本地庫緩存區,此時本地庫和工作區文件並沒有被合併,
通過命令:git checkout origin/master 切換到本地庫緩存的分支上,然後通過命令: cat 文件名 來查看文件內容

接下來可以將緩存區分支文件和本地庫文件進行合併,通過命令:git checkout master切換到本地庫分支上,然後再將緩存區的分支合併到本地庫:命令爲:git merge origin/master

注: pull操作相當於 fetch + merge 操作。關於git pull命令和git fetch命令的區別可以參見博客

  1. git fetch和git pull之間的區別
  2. git pull 和 git fetch的區別?



3 團隊協作開發和跨團隊協作開發(開源項目)

團隊協作開發和跨團隊協作開發(開源項目)可以參考之前的博客:GitHub協作開發項目

其實重點是遠程倉庫和本地倉庫之間的推送(push)操作和拉取(pull)操作,因爲在這個過程中可能出現遠程庫文件和本地庫文件不相同,這是需要自己去判斷。具體的問題在實際操作中可能會遇到,等遇到了這些問題在更新自己的筆記。






參考資料

[1] https://www.bilibili.com/video/BV1pW411A7a5?p=36
[2] https://www.cnblogs.com/wbl001/p/11495110.html
[3] https://www.zhihu.com/question/38305012
[4] https://blog.csdn.net/a19881029/article/details/42245955
[5] https://blog.csdn.net/yangfengjueqi/article/details/82849826?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-8
[6] https://www.cnblogs.com/xiaocai-ios/p/7779741.html



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章