為了便于管理肄满,Git 要求每個遠程倉庫必須指定一個別名。remote 命令就用于管理倉庫別名的命令质涛。
遠程倉庫指的是托管在網(wǎng)絡(luò)上的項目倉庫稠歉。
通過 clone 命令克隆下來的倉庫,默認的別名是 origin汇陆。
主要涉及的操作有:增(add)怒炸、刪(remove)、改(rename,set-url)毡代、查(show , get-url)阅羹。
常用命令
命令 | 解釋 | 選項 |
---|---|---|
git remote add <name> <url> | 添加新的遠程庫 | |
git remote remove <name> | 刪除指定的倉庫 | |
git remote rename <old> <new> | 將倉庫別名重命名為 new | |
git remote set-url <name> <newurl> | 將倉庫的 url 修改為 newurl | |
git remote | 列出所有的遠程庫 | -v 表示查看每個庫的 url |
git remote show <name> | 查看指定庫的詳細信息 | |
git remote get-url <name> | 獲得指定倉庫的 url |
在操作時,將別名與 url 的關(guān)系理解為 Map 集合 —— 其中別名是 key教寂,url 是 value捏鱼。
添加
git remote add <name> <url>:添加一個遠程庫,同時為該遠程庫指定別名酪耕,使用別名指代遠程庫地址导梆。
git remote add images https://github.com/birdandcliff/images.git
以后可以使用 images 代替對應(yīng)的url。
使用該命令可以將本地已有的文件與遠程倉庫關(guān)聯(lián),從而可以將本地已有的文件提交到遠程倉庫中问潭。
刪除
使用 git remote remove <name> 移除別名對應(yīng)的倉庫猿诸。
$ git remote
demo
newo
$ git remote remove newo
$ git remote
demo
修改
修改別名
使用 git remote rename <old> <name> 修改某個遠程庫的別名。
對遠程庫重命名后狡忙,對應(yīng)的分支也會發(fā)生變化梳虽,將其中關(guān)于別名部分換成新別名。
$ git remote -v
demo https://github.com/birdandcliff/seturl.git (fetch)
demo https://github.com/birdandcliff/seturl.git (push)
$ git remote -v
demo https://github.com/birdandcliff/seturl.git (fetch)
demo https://github.com/birdandcliff/seturl.git (push)
$ git remote rename demo demo2
$ git remote -v
demo2 https://github.com/birdandcliff/seturl.git (fetch)
demo2 https://github.com/birdandcliff/seturl.git (push)
可以看出灾茁, url 沒有發(fā)生變化窜觉,但對應(yīng)的別名已經(jīng)修改過了。
修改 url
使用 git remote set-url <name> <newurl> 將指定的遠程倉庫地址修改為 newurl北专。
$ git remote -v
demo https://github.com/birdandcliff/gitdemo.git (fetch)
demo https://github.com/birdandcliff/gitdemo.git (push)
$ git remote set-url demo https://github.com/birdandcliff/seturl.git
$ git remote -v
demo https://github.com/birdandcliff/seturl.git (fetch)
demo https://github.com/birdandcliff/seturl.git (push)
修改倉庫地址后禀挫,可以將本地文件提交提交到新的 url 中。
查看
可以查看所有的別名拓颓,也可以查看所有的別名與 url语婴,還能通過別名查看指定的 url。
git remote 會列出每一個遠程庫的別名驶睦∨樽螅可以使用 -v (verbose,詳細)選項指定列出詳細信息场航。如下:
git remote show <name> 可查看某個遠程庫的詳細信息
git remote get-url <name> 根據(jù) name 查看指定的 url
$ git remote
newo
$ git remote -v
newo https://github.com/birdandcliff/seturl.git (fetch)
newo https://github.com/birdandcliff/seturl.git (push)
$ git remote get-url newo
https://github.com/birdandcliff/seturl.git
$ git remote show newo
* remote newo
Fetch URL: https://github.com/birdandcliff/seturl.git
Push URL: https://github.com/birdandcliff/seturl.git
HEAD branch: master
Remote branch:
master tracked
Local branch configured for 'git pull':
master merges with remote master
Local ref configured for 'git push':
master pushes to master (up to date)
remote 的配置信息
使用 git remote add <別名> url
后缠导,會在 .git/config 文件中添加如下信息:
[remote "demo"]
url = https://github.com/birdandcliff/gitdemo.git
fetch = +refs/heads/*:refs/remotes/demo/*
fetch 的格式由一個可選的 + 號和緊隨其后的 <src>:<dst> 組成。其中 <src> 代表遠程倉庫中的引用溉痢;<dst> 是那些遠程引用在本地所對應(yīng)的位置僻造。 + 號告訴 Git 即使在不能快進的情況下也要(強制)更新引用。
因此孩饼,Git 會獲取 refs/heads/ 下面的所有引用髓削,并將它寫入到本地的 refs/remotes/demo/ 中。
-
可以對 fetch 進行手動修改镀娶。如將 fetch 行修改如下:
fetch = +refs/heads/master:refs/remotes/demo/master
那么使用
git fetch
時蔬螟,就只會拉取遠程倉庫的 master。 -
分支信息并不一定要存儲在 demo 目錄下汽畴【山恚可以在該目錄下任意指定子目錄。如:
[remote "demo"] url = https://github.com/birdandcliff/gitdemo.git fetch = +refs/heads/re:refs/remotes/demo/devlocal fetch = +refs/heads/tra:refs/remotes/demo/xx/tra
遠程的 tra 分支存儲的路徑就在 demo/xx 目錄下忍些,而不是直接位于 demo 目錄下鲁猩。
引用 tra 遠程分支時,也需要寫成
demo/xx/tra
罢坝,不能直接寫成demo/tra
形式廓握。如:$git branch -u demo/xx/tra Branch dev set up to track remote branch tra from demo.