檢視遠端倉庫
- 如果想檢視你已經配置的遠端倉庫伺服器,可以執行
git remote
命令,它會列出你指定的每一個遠端伺服器的名稱 - 如果是剛 clone 下來的自己的庫,能看到 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和名稱(origin)
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 倉庫,同時指定一個名稱
polo@B-J5D1MD6R-2312 watermarker % git remote -v origin git@gitee.com:poloyy/watermarker.git (fetch) origin git@gitee.com:poloyy/watermarker.git (push) polo@B-J5D1MD6R-2312 watermarker % git remote add test git@gitee.com:testyy/waterm arker.git polo@B-J5D1MD6R-2312 watermarker % git remote -v origin git@gitee.com:poloyy/watermarker.git (fetch) origin git@gitee.com:poloyy/watermarker.git (push) test git@gitee.com:testyy/watermarker.git (fetch) test git@gitee.com:testyy/watermarker.git (push)
可以使用 test
來代替整個 URL
git fetch 小栗子
可以執行 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
從遠端倉庫中抓取與拉取
從遠端倉庫中獲得資料,可以執行
git fetch <remote>
- 這個命令會訪問遠端倉庫,從中拉取所有你還沒有的資料
- 執行完成後,你將會擁有那個遠端倉庫中所有分支的引用,可以隨時合併或檢視
重點
git clone 命令克隆了一個倉庫,Git 會自動將其新增為遠端倉庫並預設以 “origin” 為名稱
git fetch origin
- 這樣會抓取倉庫裡所有新 push 的內容
- 但它只會將新內容下載到本地,並不會自動合併或修改當前內容,需要手動將新內容合併到本地內容中(git pull)
git pull 初步認識
- 預設情況下,
git clone
命令會自動設定本地 master 分支跟蹤 clone 下來的遠端倉庫的master
分支(或其它名字的預設分支) - 執行
git pull
通常會從最初克隆的伺服器上抓取資料並自動嘗試合併到當前所在的分支
推送到遠端倉庫
語法格式
git push <remote> <branch>
將 master 分支的內容推送到 origin 伺服器
git push origin master
remote 預設就是 origin,而 branch 預設是 master,所以等價寫法就是
git push
重點
如果在你推送前,遠端倉庫已經有新推送的內容,那麼本地需要先拉取最新的內容併合並後,才能將本地的內容重新 push 到遠端倉庫
# 一般的流程 git fetch git pull git add . git commit -m "update" git push
檢視某個遠端倉庫
git remote show <remote>
可以檢視遠端倉庫的更多資訊
% git remote show origin * 遠端 origin 獲取地址:git@gitee.com:poloyy/watermarker.git 推送地址:git@gitee.com:poloyy/watermarker.git HEAD 分支:master 遠端分支: master 已跟蹤 為 'git pull' 配置的本地分支: master 與遠端 master 合併 為 'git push' 配置的本地引用: master 推送至 master (可快進)
能獲取到的資訊
- 遠端倉庫的 URL和名稱(origin)
- 跟蹤分支的資訊
- 正處於 master 分支
- 執行 git pull 可以拉取遠端倉庫的 master 內容,並和本地 master 分支的內容進行合
- 執行 git push 可以將本地 master 分支內容推送到遠端倉庫的 master 分支上
一個看到更多資訊的栗子
$ git remote show origin * remote origin URL: https://github.com/my-org/complex-project Fetch URL: https://github.com/my-org/complex-project Push URL: https://github.com/my-org/complex-project HEAD branch: master Remote branches: master tracked dev-branch tracked markdown-strip tracked issue-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-branch master merges with remote master Local 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 remote rename <old> <new>
小栗子
$ git remote rename pb paul
$ git remote
origin
paul
同時會修改你所有遠端跟蹤的分支名字,之前引用 pb/master
的現在會引用 paul/master
移除倉庫的兩種寫法
- git remote remove
- git remote rm
git remote remove paul
$ git remote
origin
重點:一旦以這種方式刪除了一個遠端倉庫,那麼所有和這個遠端倉庫相關的遠端跟蹤分支以及配置資訊也會一起被刪除