转: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