遠(yuǎn)程倉(cāng)庫(kù)的使用
為了能在任意 Git 項(xiàng)目上協(xié)作,你需要知道如何管理自己的遠(yuǎn)程倉(cāng)庫(kù)。遠(yuǎn)程倉(cāng)庫(kù)是指托管在因特網(wǎng)或其他網(wǎng)絡(luò)中的你的項(xiàng)目的版本庫(kù)。你可以有好幾個(gè)遠(yuǎn)程倉(cāng)庫(kù),通常有些倉(cāng)庫(kù)對(duì)你只讀,有些則可以讀寫(xiě)。與他人協(xié)作涉及管理遠(yuǎn)程倉(cāng)庫(kù)以及根據(jù)需要推送或拉取數(shù)據(jù)。
管理遠(yuǎn)程倉(cāng)庫(kù)包括了解如何添加遠(yuǎn)程倉(cāng)庫(kù)、移除無(wú)效的遠(yuǎn)程倉(cāng)庫(kù)、管理不同的遠(yuǎn)程分支并定義它們是否被跟蹤等等。
查看遠(yuǎn)程倉(cāng)庫(kù)
如果想查看你已經(jīng)配置的遠(yuǎn)程倉(cāng)庫(kù)服務(wù)器,可以運(yùn)行 git remote 命令。它會(huì)列出你指定的每一個(gè)遠(yuǎn)程服務(wù)器的簡(jiǎn)寫(xiě)。如果你已經(jīng)克隆了自己的倉(cāng)庫(kù),那么至少應(yīng)該能看到 origin ——這是 Git 給你克隆的倉(cāng)庫(kù)服務(wù)器的默認(rèn)名字:
$ 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
你也可以指定選項(xiàng) -v,會(huì)顯示需要讀寫(xiě)遠(yuǎn)程倉(cāng)庫(kù)使用的 Git 保存的簡(jiǎn)寫(xiě)與其對(duì)應(yīng)的 URL。
$ git remote -v
origin https://github.com/schacon/ticgit (fetch)
origin https://github.com/schacon/ticgit (push)
如果你的遠(yuǎn)程倉(cāng)庫(kù)不止一個(gè),該命令會(huì)將它們?nèi)苛谐?。例如,與幾個(gè)協(xié)作者合作的,擁有多個(gè)遠(yuǎn)程倉(cāng)庫(kù)的倉(cāng)庫(kù)看起來(lái)像下面這樣:
$ 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)
這表示我們能非常方便地拉取其它用戶的貢獻(xiàn)。我們還可以擁有向他們推送的權(quán)限。
注意這些遠(yuǎn)程倉(cāng)庫(kù)使用了不同的協(xié)議。
添加遠(yuǎn)程倉(cāng)庫(kù)
我們?cè)谥暗恼鹿?jié)中已經(jīng)提到并展示了 git clone 命令是如何自行添加遠(yuǎn)程倉(cāng)庫(kù)的, 不過(guò)這里將告訴你如何自己來(lái)添加它。運(yùn)行 git remote add shortname url 添加一個(gè)新的遠(yuǎn)程 Git 倉(cāng)庫(kù),同時(shí)指定一個(gè)方便使用的簡(jiǎn)寫(xiě):
$ git remote
origin
$ git remote add pb https://github.com/paulboone/ticgit
$ git remote -v
origin https://github.com/schacon/ticgit (fetch)
origin https://github.com/schacon/ticgit (push)
pb https://github.com/paulboone/ticgit (fetch)
pb https://github.com/paulboone/ticgit (push)
從遠(yuǎn)程倉(cāng)庫(kù)中抓取與拉取
從遠(yuǎn)程倉(cāng)庫(kù)中獲得數(shù)據(jù),可以執(zhí)行:
$ git fetch < remote >
注意 git fetch 命令只會(huì)將數(shù)據(jù)下載到你的本地倉(cāng)庫(kù)——它并不會(huì)自動(dòng)合并或修改你當(dāng)前的工作。當(dāng)準(zhǔn)備好時(shí)你必須手動(dòng)將其合并入你的工作。
如果你的當(dāng)前分支設(shè)置了跟蹤遠(yuǎn)程分支(閱讀下一節(jié)和 Git 分支 了解更多息), 那么可以用 git pull 命令來(lái)自動(dòng)抓取后合并該遠(yuǎn)程分支到當(dāng)前分支。這或許是個(gè)更加簡(jiǎn)單舒服的工作流程。
默認(rèn)情況下,git clone 命令會(huì)自動(dòng)設(shè)置本地 master 分支跟蹤克隆的遠(yuǎn)程倉(cāng)庫(kù)的 master 分支(或其它名字的默認(rèn)分支)。運(yùn)行 git pull 通常會(huì)從最初克隆的服務(wù)器上抓取數(shù)據(jù)并自動(dòng)嘗試合并到當(dāng)前所在的分支。
推送到遠(yuǎn)程倉(cāng)庫(kù)
當(dāng)你想分享你的項(xiàng)目時(shí),必須將其推送到上游。這個(gè)命令很簡(jiǎn)單:git push remote branch。當(dāng)你想要將 master 分支推送到 origin 服務(wù)器時(shí)(克隆時(shí)通常會(huì)自動(dòng)幫你設(shè)置好那兩個(gè)名字), 那么運(yùn)行這個(gè)命令就可以將你所做的備份到服務(wù)器:
$ git push origin master
只有當(dāng)你有所克隆服務(wù)器的寫(xiě)入權(quán)限,并且之前沒(méi)有人推送過(guò)時(shí),這條命令才能生效。當(dāng)你和其他人在同一時(shí)間克隆,他們先推送到上游然后你再推送到上游,你的推送就會(huì)毫無(wú)疑問(wèn)地被拒絕。你必須先抓取他們的工作并將其合并進(jìn)你的工作后才能推送。
意思就是每次 git push 之前盡量先 git pull 一下,沒(méi)有 conflict 后再 git push。
查看某個(gè)遠(yuǎn)程倉(cāng)庫(kù)
如果想要查看某一個(gè)遠(yuǎn)程倉(cāng)庫(kù)的更多信息,可以使用 git remote show remote 命令。如果想以一個(gè)特定的縮寫(xiě)名運(yùn)行這個(gè)命令,例如 origin,會(huì)得到像下面類(lèi)似的信息:
$ git remote show origin
* remote origin
Fetch URL: https://github.com/schacon/ticgit
Push URL: https://github.com/schacon/ticgit
HEAD branch: master
Remote branches:
master tracked
dev-branch 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)
它同樣會(huì)列出遠(yuǎn)程倉(cāng)庫(kù)的 URL 與跟蹤分支的信息。這些信息非常有用,它告訴你正處于 master 分支,并且如果運(yùn)行 git pull, 就會(huì)抓取所有的遠(yuǎn)程引用,然后將遠(yuǎn)程 master 分支合并到本地 master 分支。它也會(huì)列出拉取到的所有遠(yuǎn)程引用。
遠(yuǎn)程倉(cāng)庫(kù)的重命名與移除
你可以運(yùn)行 git remote rename 來(lái)修改一個(gè)遠(yuǎn)程倉(cāng)庫(kù)的簡(jiǎn)寫(xiě)名。例如,想要將 pb 重命名為 paul,可以用 git remote rename 這樣做:
$ git remote rename pb paul
$ git remote
origin
paul
這同樣也會(huì)修改你所有遠(yuǎn)程跟蹤的分支名字。
如果因?yàn)橐恍┰蛳胍瞥粋€(gè)遠(yuǎn)程倉(cāng)庫(kù)——你已經(jīng)從服務(wù)器上搬走了或不再想使用某一個(gè)特定的鏡像了, 又或者某一個(gè)貢獻(xiàn)者不再貢獻(xiàn)了——可以使用 git remote remove 或 git remote rm :
$ git remote remove paul
$ git remote
origin
一旦你使用這種方式刪除了一個(gè)遠(yuǎn)程倉(cāng)庫(kù),那么所有和這個(gè)遠(yuǎn)程倉(cāng)庫(kù)相關(guān)的遠(yuǎn)程跟蹤分支以及配置信息也會(huì)一起被刪除。
-
Git
+關(guān)注
關(guān)注
0文章
205瀏覽量
16211 -
遠(yuǎn)程倉(cāng)庫(kù)
+關(guān)注
關(guān)注
0文章
3瀏覽量
2156
發(fā)布評(píng)論請(qǐng)先 登錄
Git常用的超級(jí)實(shí)用命令

Git命令之本地分支與遠(yuǎn)程分支關(guān)聯(lián)和解除

Git 常用命令大全
【HarmonyOS HiSpark Wi-Fi IoT 套件試用連載】git倉(cāng)庫(kù)建立以及使用
HarmonyOS-Device Stdio中git的使用
Git在RT-Thread studio中的基本操作步驟解析
如何使用計(jì)算機(jī)上的本地倉(cāng)庫(kù)以及GitHub上托管的遠(yuǎn)程倉(cāng)庫(kù)呢
packages中有git倉(cāng)庫(kù)的軟件包的工程推送到遠(yuǎn)程倉(cāng)庫(kù)軟件包文件夾內(nèi)無(wú)內(nèi)容?
如何跟遠(yuǎn)程倉(cāng)庫(kù)一起協(xié)作提交代碼

如何在GitHub上創(chuàng)建一個(gè)全新的Git倉(cāng)庫(kù)詳細(xì)講解

騰訊是如何使用Git?

【HarmonyOS HiSpark Wi-Fi IoT 套件試用連載】git倉(cāng)庫(kù)建立以及使用
獲取Git項(xiàng)目倉(cāng)庫(kù)的兩種方式
git如何記錄每次更新到倉(cāng)庫(kù)

評(píng)論