轉:https://www.cnblogs.com/lazb/articles/5597878.htmlhtml
問:Coding遠程倉庫地址變了,本地git倉庫地址如何更新爲最新地址git
git修改遠程倉庫地址
方法有三種:
1.修改命令
git remote origin set-url [url]
2.先刪後加
git remote rm origin
git remote add origin [url]
3.直接修改config文件
git 遠程倉庫管理
要參與任何一個 Git 項目的協做,必需要了解該如何管理遠程倉庫.遠程倉庫是指託管在網絡上的項目倉庫,可能會有好多個,其中有些你只能讀,另外有些能夠寫.同他人協做開發某 個項目時,須要管理這些遠程倉庫,以便推送或拉取數據,分享各自的工做進展.管理遠程倉庫的工做,包括添加遠程庫,移除廢棄的遠程庫,管理各式遠程庫分 支,定義是否跟蹤這些分支,等等.本節咱們將詳細討論遠程庫的管理和使用.
查看當前的遠程庫
要查看當前配置有哪些遠程倉庫,能夠用 git remote 命令,它會列出每一個遠程庫的簡短名字.在克隆完某個項目後,至少能夠看到一個名爲 origin 的遠程庫,Git 默認使用這個名字來標識你所克隆的原始倉庫:
$ git clone git://github.com/schacon/ticgit.git
Initialized empty Git repository in /private/tmp/ticgit/.git/
remote: Counting objects: 595, done.
remote: Compressing objects: 100% (269/269), done.
remote: Total 595 (delta 255), reused 589 (delta 253)
Receiving objects: 100% (595/595), 73.31 KiB | 1 KiB/s, done.
Resolving deltas: 100% (255/255), done.
$ cd ticgit
$ git remote
origin也能夠加上 -v 選項(譯註:此爲 ?verbose 的簡寫,取首字母),顯示對應的克隆地址:
$ git remote -v
origin git://github.com/schacon/ticgit.git若是有多個遠程倉庫,此命令將所有列出.好比在個人 Grit 項目中,能夠看到:
$ cd grit
$ git remote -v
bakkdoor git://github.com/bakkdoor/grit.git
cho45 git://github.com/cho45/grit.git
defunkt git://github.com/defunkt/grit.git
koke git://github.com/koke/grit.git
origin git@github.com:mojombo/grit.git這樣一來,我就能夠很是輕鬆地從這些用戶的倉庫中,拉取他們的提交到本地.請注意,上面列出的地址只有 origin 用的是 SSH URL 連接,因此也只有這個倉庫我能推送數據上去(咱們會在第四章解釋緣由).
添加遠程倉庫
要添加一個新的遠程倉庫,能夠指定一個簡單的名字,以便未來引用,運行 git remote add [shortname] [url]:
$ git remote
origin
$ git remote add pb git://github.com/paulboone/ticgit.git
$ git remote -v
origin git://github.com/schacon/ticgit.git
pb git://github.com/paulboone/ticgit.git如今能夠用字串 pb 指代對應的倉庫地址了.好比說,要抓取全部 Paul 有的,但本地倉庫沒有的信息,能夠運行 git fetch pb:
$ git fetch pb
remote: Counting objects: 58, done.
remote: Compressing objects: 100% (41/41), done.
remote: Total 44 (delta 24), reused 1 (delta 0)
Unpacking objects: 100% (44/44), done.
From git://github.com/paulboone/ticgit
* [new branch] master -> pb/master
* [new branch] ticgit -> pb/ticgit如今,Paul 的主幹分支(master)已經徹底能夠在本地訪問了,對應的名字是 pb/master,你能夠將它合併到本身的某個分支,或者切換到這個分支,看看有些什麼有趣的更新.
從遠程倉庫抓取數據
正如以前所看到的,能夠用下面的命令從遠程倉庫抓取數據到本地:
$ git fetch [remote-name]此命令會到遠程倉庫中拉取全部你本地倉庫中尚未的數據.運行完成後,你就能夠在本地訪問該遠程倉庫中的全部分支,將其中某個 分支合併到本地,或者只是取出某個分支,一探究竟.(咱們會在第三章詳細討論關於分支的概念和操做.)
若是是克隆了一個倉庫,此命令會自動將遠程倉庫歸於 origin 名下.因此,git fetch origin 會抓取從你上次克隆以來別人上傳到此遠程倉庫中的全部更新(或是上次 fetch 以來別人提交的更新).有一點很重要,須要記住,fetch 命令只是將遠端的數據拉到本地倉庫,並不自動合併到當前工做分支,只有當你確實準備好了,才能手工合併.(說 明:事先須要建立好遠程的倉庫,而後執行:git remote add [倉庫名] [倉庫url],git fetch [遠程倉庫名],便可抓取到遠程倉庫數據到本地,再用git merge remotes/[倉庫名]/master就能夠將遠程倉庫merge到本地當前branch.這種分支方式比較適合獨立-整合開發,即各自開發測試好後 再整合在一塊兒.好比,Android的Framework和AP開發.
能夠使用--bare 選項運行git init 來設定一個空倉庫,這會初始化一個不包含工做目錄的倉庫.
$ cd /opt/git
$ mkdir project.git
$ cd project.git
$ git --bare init這時,Join,Josie 或者Jessica 就能夠把它加爲遠程倉庫,推送一個分支,從而把第一個版本的工程上傳到倉庫裏了.)
若是設置了某個分支用於跟蹤某個遠端倉庫的分支(參見下節及第三章的內容),能夠使用 git pull 命令自動抓取數據下來,而後將遠端分支自動合併到本地倉庫中當前分支.在平常工做中咱們常常這麼用,既快且好.實際上,默認狀況下 git clone 命令本質上就是自動建立了本地的 master 分支用於跟蹤遠程倉庫中的 master 分支(假設遠程倉庫確實有 master 分支).因此通常咱們運行 git pull,目的都是要從原始克隆的遠端倉庫中抓取數據後,合併到工做目錄中當前分支.
推送數據到遠程倉庫
項目進行到一個階段,要同別人分享目前的成果,能夠將本地倉庫中的數據推送到遠程倉庫.實現這個任務的命令很簡單: git push [remote-name] [branch-name].若是要把本地的 master 分支推送到 origin 服務器上(再次說明下,克隆操做會自動使用默認的 master 和 origin 名字),能夠運行下面的命令:
$ git push origin master只有在所克隆的服務器上有寫權限,或者同一時刻沒有其餘人在推數據,這條命令纔會如期完成任務.若是在你推數據前,已經有其餘人推送了若干更新,那 你的推送操做就會被駁回.你必須先把他們的更新抓取到本地,併到本身的項目中,而後才能夠再次推送.有關推送數據到遠程倉庫的詳細內容見第三章.
查看遠程倉庫信息
咱們能夠經過命令 git remote show [remote-name] 查看某個遠程倉庫的詳細信息,好比要看所克隆的origin 倉庫,能夠運行:
$ git remote show origin
* remote origin
URL: git://github.com/schacon/ticgit.git
Remote branch merged with 'git pull' while on branch master
master
Tracked remote branches
master
ticgit除了對應的克隆地址外,它還給出了許多額外的信息.它友善地告訴你若是是在 master 分支,就能夠用git pull 命令抓取數據合併到本地.另外還列出了全部處於跟蹤狀態中的遠端分支.
實際使用過程當中,git remote show 給出的信息可能會像這樣:
$ git remote show origin
* remote origin
URL: git@github.com:defunkt/github.git
Remote branch merged with 'git pull' while on branch issues
issues
Remote branch merged with 'git pull' while on branch master
master
New remote branches (next fetch will store in remotes/origin)
caching
Stale tracking branches (use 'git remote prune')
libwalker
walker2
Tracked remote branches
acl
apiv2
dashboard2
issues
master
postgres
Local branch pushed with 'git push'
master:master它告訴咱們,運行 git push 時缺省推送的分支是什麼(譯註:最後兩行).它還顯示了有哪些遠端分支尚未同步 到本地(譯註:第六行的 caching 分支),哪些已同步到本地的遠端分支在遠端服務器上已被刪除(譯註:Stale tracking branches 下面的兩個分支),以及運行 git pull 時將自動合併哪些分支(譯註:前四行中列出的 issues 和 master 分支).(此命令也能夠查看到本地分支和遠程倉庫分支的對應關係.)
遠程倉庫的刪除和重命名
在新版 Git 中能夠用 git remote rename 命令修改某個遠程倉庫的簡短名稱,好比想把 pb 改爲 paul,能夠這麼運行:
$ git remote rename pb paul
$ git remote
origin
paul注意,對遠程倉庫的重命名,也會使對應的分支名稱發生變化,原來的 pb/master 分支如今成了paul/master.
碰到遠端倉庫服務器遷移,或者原來的克隆鏡像再也不使用,又或者某個參與者再也不貢獻代碼,那麼須要移除對應的遠端倉庫,能夠運行 git remote rm 命令:
$ git remote rm paul
$ git remote
origingithub