git基础-远程仓库的使用
遠程倉庫的使用
為了能在任意 Git 項目上協作,你需要知道如何管理自己的遠程倉庫。 遠程倉庫是指托管在因特網或其他網絡中的你的項目的版本庫。 你可以有好幾個遠程倉庫,通常有些倉庫對你只讀,有些則可以讀寫。 與他人協作涉及管理遠程倉庫以及根據需要推送或拉取數據。 管理遠程倉庫包括了解如何添加遠程倉庫、移除無效的遠程倉庫、管理不同的遠程分支并定義它們是否被跟蹤等等。 在本節中,我們將介紹一部分遠程管理的技能。
?
查看遠程倉庫
如果想查看你已經配置的遠程倉庫服務器,可以運行?git remote?命令。 它會列出你指定的每一個遠程服務器的簡寫。 如果你已經克隆了自己的倉庫,那么至少應該能看到 origin - 這是 Git 給你克隆的倉庫服務器的默認名字:
$ git clone https://github.com/schacon/ticgit Cloning into 'ticgit'... remote: Reusing existing pack: 1857, done. remote: Total 1857 (delta 0), reused 0 (delta 0) Receiving objects: 100% (1857/1857), 374.35 KiB | 268.00 KiB/s, done. Resolving deltas: 100% (772/772), done. Checking connectivity... done. $ cd ticgit $ git remote origin你也可以指定選項?-v,會顯示需要讀寫遠程倉庫使用的 Git 保存的簡寫與其對應的 URL。
$ git remote -v origin https://github.com/schacon/ticgit (fetch) origin https://github.com/schacon/ticgit (push) 如果你的遠程倉庫不止一個,
該命令會將它們全部列出。 例如,與幾個協作者合作的,擁有多個遠程倉庫的倉庫看起來像下面這樣:
$ cd grit $ git remote -v bakkdoor https://github.com/bakkdoor/grit (fetch) bakkdoor https://github.com/bakkdoor/grit (push) cho45 https://github.com/cho45/grit (fetch) cho45 https://github.com/cho45/grit (push) defunkt https://github.com/defunkt/grit (fetch) defunkt https://github.com/defunkt/grit (push) koke git://github.com/koke/grit.git (fetch) koke git://github.com/koke/grit.git (push) origin git@github.com:mojombo/grit.git (fetch) origin git@github.com:mojombo/grit.git (push)?
添加遠程倉庫
運行?git remote add <shortname> <url>?添加一個新的遠程 Git 倉庫,同時指定一個你可以輕松引用的簡寫:
$ git remote origin $ git remote add pb https://github.com/paulboone/ticgit $ git remote -v origin https://github.com/schacon/ticgit (fetch) origin https://github.com/schacon/ticgit (push) pb https://github.com/paulboone/ticgit (fetch) pb https://github.com/paulboone/ticgit (push)現在你可以在命令行中使用字符串?pb?來代替整個 URL。 例如,如果你想拉取 Paul 的倉庫中有但你沒有的信息,可以運行?git fetch pb:? $ git fetch pb remote: Counting objects: 43, done. remote: Compressing objects: 100% (36/36), done. remote: Total 43 (delta 10), reused 31 (delta 5) Unpacking objects: 100% (43/43), done. From https://github.com/paulboone/ticgit* [new branch] master -> pb/master* [new branch] ticgit -> pb/ticgit
現在 Paul 的 master 分支可以在本地通過?pb/master?訪問到 - 你可以將它合并到自己的某個分支中,
或者如果你想要查看它的話,可以checkout出一個指向該點的本地分支。
從遠程倉庫中抓取與拉取
就如剛才所見,從遠程倉庫中獲得數據,可以執行:
$ git fetch [remote-name]這個命令會訪問遠程倉庫,從中拉取所有你還沒有的數據。 執行完成后,你將會擁有那個遠程倉庫中所有分支的引用,可以隨時合并或查看。
如果你使用?clone?命令克隆了一個倉庫,命令會自動將其添加為遠程倉庫并默認以 “origin” 為簡寫。 所以,git fetch origin?會抓取克隆(或上一次抓取)后新推送的所有工作。 必須注意?git fetch?命令會將數據拉取到你的本地倉庫 - 它并不會自動合并或修改你當前的工作。 當準備好時你必須手動將其合并入你的工作。
如果你有一個分支設置為跟蹤一個遠程分支,可以使用?git pull?命令來自動的抓取然后合并遠程分支到當前分支。 這對你來說可能是一個更簡單或更舒服的工作流程;默認情況下,git clone?命令會自動設置本地 master 分支跟蹤克隆的遠程倉庫的 master 分支(或不管是什么名字的默認分支)。 運行?git pull?通常會從最初克隆的服務器上抓取數據并自動嘗試合并到當前所在的分支。
?
推送到遠程倉庫
當你想分享你的項目時,必須將其推送到上游。 這個命令很簡單:git push [remote-name] [branch-name]。 當你想要將 master 分支推送到?origin?服務器時(再次說明,克隆時通常會自動幫你設置好那兩個名字),那么運行這個命令就可以將你所做的備份到服務器:
$ git push origin master只有當你有所克隆服務器的寫入權限,并且之前沒有人推送過時,這條命令才能生效。 當你和其他人在同一時間克隆,他們先推送到上游然后你再推送到上游,你的推送就會毫無疑問地被拒絕。 你必須先將他們的工作拉取下來并將其合并進你的工作后才能推送。
?
查看遠程倉庫
如果想要查看某一個遠程倉庫的更多信息,可以使用?git remote show [remote-name]?命令。 如果想以一個特定的縮寫名運行這個命令,例如?origin,會得到像下面類似的信息:
$ git remote show origin * remote originFetch URL: https://github.com/schacon/ticgitPush URL: https://github.com/schacon/ticgitHEAD branch: masterRemote branches:master trackeddev-branch trackedLocal branch configured for 'git pull':master merges with remote masterLocal ref configured for 'git push':master pushes to master (up to date)它同樣會列出遠程倉庫的 URL 與跟蹤分支的信息。 這些信息非常有用,它告訴你正處于 master 分支,并且如果運行 git pull,就會抓取所有的遠程引用,然后將遠程 master 分支合并到本地 master 分支。 它也會列出拉取到的所有遠程引用。
這是一個經常遇到的簡單例子。 如果你是 Git 的重度使用者,那么還可以通過?git remote show?看到更多的信息。
$ git remote show origin * remote originURL: https://github.com/my-org/complex-projectFetch URL: https://github.com/my-org/complex-projectPush URL: https://github.com/my-org/complex-projectHEAD branch: masterRemote branches:master trackeddev-branch trackedmarkdown-strip trackedissue-43 new (next fetch will store in remotes/origin)issue-45 new (next fetch will store in remotes/origin)refs/remotes/origin/issue-11 stale (use 'git remote prune' to remove)Local branches configured for 'git pull':dev-branch merges with remote dev-branchmaster merges with remote masterLocal refs configured for 'git push':dev-branch pushes to dev-branch (up to date)markdown-strip pushes to markdown-strip (up to date)master pushes to master (up to date)這個命令列出了當你在特定的分支上執行?git push?會自動地推送到哪一個遠程分支。 它也同樣地列出了哪些遠程分支不在你的本地,哪些遠程分支已經從服務器上移除了,還有當你執行?git pull?時哪些分支會自動合并。
?
?
遠程倉庫的移除與重命名
?
如果想要重命名引用的名字可以運行?git remote rename?去修改一個遠程倉庫的簡寫名。 例如,想要將?pb?重命名為?paul,可以用?git remote rename?這樣做:
?
$ git remote rename pb paul $ git remote origin paul?
值得注意的是這同樣也會修改你的遠程分支名字。 那些過去引用?pb/master?的現在會引用?paul/master。
?
如果因為一些原因想要移除一個遠程倉庫 - 你已經從服務器上搬走了或不再想使用某一個特定的鏡像了,又或者某一個貢獻者不再貢獻了 - 可以使用?git remote rm?:
?
$ git remote rm paul $ git remote origin?
?轉載于:https://www.cnblogs.com/laphome/p/11272962.html
總結
以上是生活随笔為你收集整理的git基础-远程仓库的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux计划任务执行日志,linux中
- 下一篇: android 技能 英文,讯飞输入法A