Git11-遠程倉庫的使用1

添加遠程倉庫

你首先需要有一個遠程倉庫,我是在 碼云上創建的項目,你也可以使用比較洋氣的GitHub

運行 git remote add <shortname> <url>添加一個新的遠程 Git 倉庫,同時指定一個你可以輕松引用的簡寫:

$ git remote add testGit git@git.oschina.net:IyayuProject/TestGit.git

解釋:
1.IyayuProject是你的用戶名,而TestGit則是你的項目名。
2.添加遠程倉庫后,testGit是你的遠程倉庫的名字,它同時也用來引用遠程倉庫的URL。

注意:
添加遠程倉庫前,你必須先有一個本地庫,在本地庫中添加遠程操作。
我個人的理解就是將本地倉庫和遠程倉庫進行了關聯。

從遠程倉庫中抓取數據

運行 git fetch [remote-name]命令會訪問遠程倉庫,從中抓取所有你還沒有的數據(其實就是將遠程服務器的更新取回本地)。 執行完成后,你將會擁有那個遠程倉庫中所有分支的引用,可以隨時合并或查看。

注意:可以使用git merge命令或者git rebase命令,在本地分支上合并遠程分支。

如果只想取回特定分支的更新,可以指定分支名。

$ git fetch <遠程主機名> <分支名>

比如,取回origin主機的master分支。

$ git fetch origin master

所取回的更新,在本地主機上要用"遠程主機名/分支名"的形式讀取。比如origin主機的master,就要用origin/master讀取。

$ git log origin/master

如果你使用clone命令克隆了一個倉庫,命令會自動將其添加為遠程倉庫并默認以 “origin” 為簡寫。 所以,git fetch origin會抓取克隆(或上一次抓取)后新推送的所有工作。

必須注意git fetch 命令會將數據拉取到你的本地倉庫 - 它并不會自動合并或修改你當前的工作。 當準備好時你必須手動將其合并入你的工作。

如果你有一個分支設置為跟蹤一個遠程分支,可以使用git pull命令來自動的抓取然后合并遠程分支到當前分支。

默認情況下,git clone命令會自動設置本地master分支跟蹤克隆的遠程倉庫的master分支(或不管是什么名字的默認分支)。 運行git pull通常會從最初克隆的服務器上抓取數據并自動嘗試合并到當前所在的分支。

git pull命令的作用是,取回遠程主機某個分支的更新,再與本地的指定分支合并。

$ git pull <遠程主機名> <遠程分支名>:<本地分支名>

比如,取回origin主機的next分支,與本地的master分支合并,需要寫成下面這樣。

$ git pull origin next:master

如果遠程分支是與當前分支合并,則冒號后面的部分可以省略。

$ git pull origin next

上面命令表示,取回origin/next分支,再與當前分支合并。實質上,這等同于先做git fetch,再做git merge

$ git fetch origin$ git merge origin/next

推送到遠程倉庫

當你想分享你的項目時,必須將其推送到上游。
這個命令很簡單:$ git push <遠程主機名> <本地分支名>:<遠程分支名>。當你想要將master分支推送到origin服務器時(再次說明,克隆時通常會自動幫你設置好那兩個名字),那么運行這個命令就可以將你所做的備份到服務器:

$ git push origin master

只有當你有所克隆服務器的寫入權限,并且之前沒有人推送過時,這條命令才能生效。 當你和其他人在同一時間克隆,他們先推送到上游然后你再推送到上游,你的推送就會毫無疑問地被拒絕。 你必須先將他們的工作拉取下來并將其合并進你的工作后才能推送。

注意,分支推送順序的寫法是<來源地>:<目的地>,所以git pull是<遠程分支>:<本地分支>,而git push是<本地分支>:<遠程分支>。

如果省略遠程分支名,則表示將本地分支推送與之存在"追蹤關系"的遠程分支(通常兩者同名),如果該遠程分支不存在,則會被新建。

$ git push origin master

上面命令表示,將本地的master分支推送到origin主機的```master``分支。如果后者不存在,則會被新建。

如果省略本地分支名,則表示刪除指定的遠程分支,因為這等同于推送一個空的本地分支到遠程分支。

$ git push origin :master
# 等同于
$ git push origin --delete master

上面命令表示刪除origin主機的master分支。

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

$ git push origin

上面命令表示,將當前分支推送到origin主機的對應分支。
如果當前分支只有一個追蹤分支,那么主機名都可以省略。

$ git push

如果當前分支與多個主機存在追蹤關系,則可以使用-u選項指定一個默認主機,這樣后面就可以不加任何參數使用git push

$ git push -u origin master

上面命令將本地的master分支推送到origin主機,同時指定origin為默認主機,后面就可以不加任何參數使用git push了。

還有一種情況,就是不管是否存在對應的遠程分支,將本地的所有分支都推送到遠程主機,這時需要使用--all選項。

$ git push --all origin

上面命令表示,將所有本地分支都推送到origin主機。

如果遠程主機的版本比本地版本更新,推送時Git會報錯,要求先在本地做git pull合并差異,然后再推送到遠程主機。這時,如果你一定要推送,可以使用--force選項。

$ git push --force origin

上面命令使用--force選項,結果導致遠程主機上更新的版本被覆蓋。除非你很確定要這樣做,否則應該盡量避免使用--force選項。

最后,git push不會推送標簽(tag),除非使用--tags選項。

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

推薦閱讀更多精彩內容

  • 1.git的安裝 1.1 在Windows上安裝Git msysgit是Windows版的Git,從https:/...
    落魂灬閱讀 12,695評論 4 54
  • 遠程倉庫 到目前為止,我們已經掌握了如何在Git倉庫里對一個文件進行時光穿梭,你再也不用擔心文件備份或者丟失的問題...
    歸云丶閱讀 1,970評論 0 5
  • 文|峰語 沒心沒肺的活著 長這么大 哦 天知道 我是真 還是蠢???
    代峰語閱讀 161評論 0 1
  • rabbitmq-plugins 是管理RabbitMQ broker插件的命令行。 語法 說明 rabbitmq...
    jshan閱讀 11,282評論 0 2
  • 廖雪峰:Python教程 1.因為計算機只能處理數字,如果要處理文本,就必須先把文本轉換為數字才能處理。最早的計算...
    姚屹晨閱讀 224評論 0 0