Git 遠程倉庫管理

之前的文章介紹了如何對本地倉庫進行管理,并在本地創(chuàng)建了一個Git倉庫。要參與一個git項目的寫作,就必須了解如何管理遠程倉庫,接下來主要介紹如何進行遠程倉庫的管理。

1 在github創(chuàng)建遠程倉庫

登錄github,有網(wǎng)站右上角找到"new repository"按鈕,創(chuàng)建一個新的倉庫


create a new repository

在Repository name中填寫MyGitTest,其默認即可,而后點擊create repository,這樣就創(chuàng)建了一個新的github遠程倉庫。在其中新建一個README.md說明文件以及一個測試文鍵test_1

2 clone操作

從遠程倉庫克隆一個版本庫到本地倉庫,指令格式:

git clone 版本庫地址

其中版本庫地址支持多種協(xié)議:http(s)、ssh、git等
示例
將上述創(chuàng)建的MyGitTest版本庫clone到本地:

$ git clone git@github.com:zhoushuo19/MyGitTest.git

3 remote操作

為了操作遠程倉庫,首先需要使用remote add指令將遠程倉庫的url以及定義的別名添加到本地的遠程倉庫列表中。如下列出了,對遠程倉庫列表的操作指令:

git remote add alias url    #添加遠程倉庫
git remote                  #列出所有遠程倉庫的別名
git remote -v               #列出所有遠程倉庫的別名以及對應url
git remote rm alias         #刪除指定遠程倉庫
git remote rename old-alias new-alias   #重命名
git remote set-url alias url    #更新url

示例
執(zhí)行如下指令,添加新的遠程倉庫:

$ git remote add origin git@github.com:user_name/MyGitTest.git      #添加遠程倉庫
$ git remote -v     #列出所有遠程倉庫
origin  git@github.com:zhoushuo19/MyGitTest.git (fetch)
origin  git@github.com:zhoushuo19/MyGitTest.git (push)

需要注意
1)如果本地版本庫MyGitTest是通過clone指令從遠程倉庫獲取到的,那么在遠程倉庫列表中已經(jīng)設置了別名origin與遠程倉庫url的對應關系,不需要再次執(zhí)行git remote add origin ...指令
2)上述指令中git@github.com:user_name/MyGitTest.git就是遠程倉庫的網(wǎng)絡地址,這里一定要將其修改為你自己的地址,不然你將無法將本地倉庫推送到遠程倉庫。

4 fetch操作:

當遠程倉庫中有了更新(commit),需要將這些更新抓取到本地,這時就需要使用git fetch指令。指令格式:

git fetch remote-name

上述命令會將遠程倉庫中的所有分支全部取回,并更新到本地對應的分支上。當僅需要從遠程倉庫取回某個分支時,就需要指定分支名,指令格式:

git fetch remote-name branch-name

遠程分支對應的本地分支名的形式是:遠程主機名/分支名,例如origin主機上的master分支,對應到本地,分支名就是origin/master。而后,我們就可以在本地訪問該遠程分支的所有分支:1)將其中某個分支合并到本地(merge);2)直接取出某個分支查看其中的內(nèi)容(checkout)
示例
1)在遠程倉庫MyGitTest中添加一個test_2文件,使用git fetch指令將遠程倉庫取回到本地:

$ git fetch origin master

2)查看本地所有分支

$ git branch -a     #查看本地所有分支
* master
  remotes/origin/master

其中master是當前的本地分支,remotes/origin/master是遠程分支在本地對應的分支
3)查看當前本地分支中的內(nèi)容,而后檢出獲取到的遠程分支,再次查看其中的內(nèi)容

$ ls
README.md  test_1
$ git checkout origin/master    #切換到獲取的遠程分支
$ ls
README.md  test_1  test_2

4)將獲取的遠程分支合并到本地分支

$ git checkout master       #切換到本地分支
$ git merge origin/master   #將獲取的遠程分支合并到本地分支
Updating 52bba6b..dbfe1cf
Fast-forward
 test_2 | 1 +
 2 files changed, 3 insertions(+)
 create mode 100644 test_2
$ ls    #查看內(nèi)容
README.md  test_1  test_2

5 pull操作

上述fecth指令只是將遠程倉庫中的數(shù)據(jù)拉取到本地倉庫,并不會將其合并到當前的工作分區(qū),合并操作是需要后續(xù)使用merge指令來進行合并的。
git pull指令的功能是,抓取遠程倉庫的某個分支合并到本地倉庫的指定分支上。這是比較常用的方式(至少我這么認為)。指令格式:

git pull remote-name remote-branch:local-branch

遠程分支與當前分支進行合并時,指令格式:

git pull remote-name remote-branch

本地分支與遠程分支之間,有一種追蹤關系,比如在git clone時,本地分支默認與遠程倉庫的同名分支建立追蹤關系,例如本地master分支自動追蹤origin/master分支。如果當前分支與遠程分支存在追蹤關系,指令格式簡化為:

git pull remote-name

如果當前分支只有一個追蹤分支,那么主機名都可以省略:

git pull

示例
在github端修改test_1文件,在本地執(zhí)行執(zhí)行如下指令,獲取到遠程倉庫中的更新:

$ git pull
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From github.com:zhoushuo19/MyGitTest
   1e7813a..e3aca3c  master     -> origin/master
Updating 1e7813a..e3aca3c
Fast-forward
 test_1 | 1 +
 1 file changed, 1 insertion(+)

6 push操作

git push是將本地分支的更新推送到遠程倉庫的指令,指令格式與git pull指令類似:

git push remote-name local-branch:remote-branch

忽略遠程分支,則表示將本地分支推送與之存在”追蹤關系”的遠程分支,如果該分支不存在,則新建該遠程分支:

git push remote-name local-branch

如果忽略本地分支,則表示刪除指定的遠程分支:

git push remote-name :remote-branch
等同于
git push remote-name --delete remote-branch

如果當前分支與遠程分支之間存在追蹤關系,則本地分支和遠程分支都可以省略

git push remote-name

如果當前分支只有一個追蹤分支,那么主機名都可以省略:

git push

示例
修改本地倉庫中的test_1文件,并將該修改推送到遠程倉庫:

$ git add test_1        #添加文件到stage
$ git commit -m"update test_1" test_1   #提交到本地倉庫
[master ed8cf15] update test_1
 1 file changed, 1 insertion(+)
$ git push  #推送到遠程倉庫
Counting objects: 5, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 328 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@github.com:zhoushuo19/MyGitTest.git
   e3aca3c..ed8cf15  master -> master
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 26歲,你看著身邊的人都結(jié)了婚 婚禮的份子錢逐年遞增 春節(jié)回家,父母從帶你走親戚 變成了帶你去見相親對象 見了十幾...
    七分喜歡你閱讀 1,592評論 0 2
  • 用平衡的觀點去看待過去、現(xiàn)在和未來,用鄭重的態(tài)度過好當下的生活,并連接過去和未來。 明確工作和生活的界限,用...
    不二的哥閱讀 518評論 0 0
  • 我不喜歡走出舒適區(qū)。很簡單的表現(xiàn),我不喜歡改變,在一個單位待久了,很多同事處久了,會因同事的突然離職,悵然若失很久...
    mylkevin閱讀 158評論 0 0
  • 突然我發(fā)現(xiàn),我是一個心情不好就會找人聊天的家伙。。這樣好不好呢?
    阿布朵朵0閱讀 167評論 0 0
  • 電視劇《歡樂頌》終于播完了,在劇中一直哭哭啼啼惹人心煩的邱瑩瑩也終于收獲了愛情,無論人前人后,無論何時何地,眉眼發(fā)...
    卻上心頭68閱讀 454評論 0 0

友情鏈接更多精彩內(nèi)容