這篇文章主要介紹了Git如何修改遠程倉庫地址,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
公司搬移, 作爲git倉庫的服務器IP地址變了。 本地代碼挺多,重新檢出太佔時間,可以修改一個什麼配置讓我本地倉庫和新的遠程倉庫建立關聯嗎, 答案是肯定的!
方法有很多,這裏簡單介紹幾種:
以下均以項目git_test爲例:
老地址:http://192.168.1.12:9797/john/git_test.git
新地址:http://192.168.100.235:9797/john/git_test.git
遠程倉庫名稱: origin
方法一 通過命令直接修改遠程地址
進入git_test根目錄
- git remote 查看所有遠程倉庫, git remote xxx 查看指定遠程倉庫地址
- git remote set-url origin http://192.168.100.235:9797/john/git_test.git
方法二 通過命令先刪除再添加遠程倉庫
進入git_test根目錄
- git remote 查看所有遠程倉庫, git remote xxx 查看指定遠程倉庫地址
- git remote rm origin
- git remote add origin http://192.168.100.235:9797/john/git_test.git
方法三 直接修改配置文件
進入git_test/.git
- vim config
- [core]
- repositoryformatversion = 0
- filemode = true
- logallrefupdates = true
- precomposeunicode = true
- [remote "origin"]
- url = http://192.168.100.235:9797/shimanqiang/assistant.git
- fetch = +refs/heads/*:refs/remotes/origin/*
- [branch "master"]
- remote = origin
- merge = refs/heads/master
修改 [remote “origin”]下面的url即可
方法四 通過第三方git客戶端修改。
以SourceTree爲例,點擊 倉庫 -> 倉庫配置 -> 遠程倉庫 即可管理此項目中配置的所有遠程倉庫, 而且這個界面最下方還可以點擊編輯配置文件,同樣可以完成方法三。
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 [email protected]: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: [email protected]: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
- origin
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持我們。