遠(yuǎn)程倉(cāng)庫(kù)操作

遠(yuǎn)程倉(cāng)庫(kù)

1.克隆遠(yuǎn)程倉(cāng)庫(kù)

git clone <url> [dir] #將存儲(chǔ)庫(kù)克隆到新創(chuàng)建的目錄中乌昔,默認(rèn)與遠(yuǎn)程主機(jī)的版本庫(kù)同名爬迟,可以指定目錄名稱(chēng)dir
執(zhí)行此命令會(huì)為克隆的存儲(chǔ)庫(kù)中的每個(gè)分支創(chuàng)建遠(yuǎn)程跟蹤分支(使用git branch -r可見(jiàn)),并且本地創(chuàng)建一個(gè)master分支,與本地的遠(yuǎn)程跟蹤分支master進(jìn)行關(guān)聯(lián)电湘。

2.添加遠(yuǎn)程倉(cāng)庫(kù)

git remote add <remoteName> <url> #remoteName為遠(yuǎn)程倉(cāng)庫(kù)名稱(chēng)每庆,url為遠(yuǎn)程倉(cāng)庫(kù)鏈接
實(shí)際上是與遠(yuǎn)程倉(cāng)庫(kù)建立聯(lián)系筐带,這樣在推送和拉取代碼時(shí)就知道往哪里推送和拉取了。

示例:在github上新建一個(gè)倉(cāng)庫(kù)缤灵,然后在本地一個(gè)空的git倉(cāng)庫(kù)里添加遠(yuǎn)程倉(cāng)庫(kù)

3.查看遠(yuǎn)程倉(cāng)庫(kù)

git remote #只查看遠(yuǎn)程倉(cāng)庫(kù)名
git remote -v #查看遠(yuǎn)程倉(cāng)庫(kù)名及url信息

4.修改|查看遠(yuǎn)程倉(cāng)庫(kù)鏈接

git remote set-url <remoteName> <url> #設(shè)置指定遠(yuǎn)程倉(cāng)庫(kù)的鏈接
git remote get-url <remoteName> #獲取指定遠(yuǎn)程倉(cāng)庫(kù)的鏈接

5.修改本地遠(yuǎn)程倉(cāng)庫(kù)名稱(chēng)

git remote rename <old> <new>

6.刪除本地的遠(yuǎn)程倉(cāng)庫(kù)

git remote remove <remoteName>

遠(yuǎn)程分支

1.遠(yuǎn)程分支查看

git branch -a #查看本地及遠(yuǎn)程分支
git branch -r #只查看遠(yuǎn)程分支
git branch -l #只查看本地分支

2.1從遠(yuǎn)程分支拉取內(nèi)容

git fetch <remote_name> <branch_name> #從遠(yuǎn)程倉(cāng)庫(kù)的指定同名分支上拉取最新的內(nèi)容
git fetch #如果省略參數(shù)烫堤,會(huì)從遠(yuǎn)程倉(cāng)庫(kù)的所有分支上拉取最新的內(nèi)容
這將更新git remote中所有的遠(yuǎn)程倉(cāng)庫(kù)所包含分支的最新commitId, 將其記錄到.git/FETCH_HEAD文件中
FETCH_HEAD:該文件在git目錄下,指向目前已經(jīng)從遠(yuǎn)程倉(cāng)庫(kù)取下來(lái)的分支的末端版本
git fetch更新遠(yuǎn)程倉(cāng)庫(kù)的方式如下:

# 方法一
git fetch origin master    #從遠(yuǎn)程的origin倉(cāng)庫(kù)的master分支下載代碼到本地的origin master
git log -p master.. origin/master    #比較本地的倉(cāng)庫(kù)和遠(yuǎn)程倉(cāng)庫(kù)的區(qū)別
git merge origin/master    #把遠(yuǎn)程下載下來(lái)的代碼合并到本地倉(cāng)庫(kù)

# 方法二
git fetch origin master:temp    #本地新建一個(gè)分支temp凤价,并將遠(yuǎn)程origin倉(cāng)庫(kù)的master分支下載到本地temp分支
git diff temp    #比較master分支和temp分支的不同
git merge temp    #合并temp分支到master分支
git branch -d temp    #刪除temp
2.2從遠(yuǎn)程分支拉取內(nèi)容

git pull <remote_name> <branch_name> #從遠(yuǎn)程倉(cāng)庫(kù)的指定同名分支上拉取最新的內(nèi)容鸽斟,會(huì)自動(dòng)進(jìn)行分支的合并
該命令等同于 git fetch + git merge
git pull #如果省略參數(shù),會(huì)自動(dòng)從當(dāng)前分支名稱(chēng)相同的遠(yuǎn)程分支上拉取內(nèi)容利诺。如果當(dāng)前分支沒(méi)有跟蹤到任何遠(yuǎn)程分支或者跟蹤的遠(yuǎn)程分支不同名富蓄,則拉取失敗
git pull origin master --allow-unrelated-histories #合并兩個(gè)獨(dú)立的倉(cāng)庫(kù)(第一次合并倉(cāng)庫(kù)的時(shí)候必須使用該選項(xiàng)),否則兩個(gè)倉(cāng)庫(kù)如果都有內(nèi)容的話(huà)慢逾,第一次進(jìn)行合并會(huì)報(bào)錯(cuò):refusing to merge unrelated histories

3.推送本地分支至遠(yuǎn)程

git push <remote_name> <branch_name> #將指定本地分支推送到遠(yuǎn)程倉(cāng)庫(kù)的同名分支上立倍,如果遠(yuǎn)程分支不存在則會(huì)自動(dòng)創(chuàng)建
git push #如果省略參數(shù),會(huì)自動(dòng)將當(dāng)前分支推送到與其分支名稱(chēng)相同的遠(yuǎn)程分支上侣滩。如果當(dāng)前分支沒(méi)有跟蹤到任何遠(yuǎn)程分支或者跟蹤的遠(yuǎn)程分支不同名口注,則推送失敗
git push <remote_name> <branch_name>:<remote_branch> #將本地分支推送到遠(yuǎn)程指定的分支上
例如:
git push origin dev #推送本地dev分支到遠(yuǎn)程的dev分支
git push origin HEAD:master #推送本地HEAD指向的分支(當(dāng)前工作分支)到遠(yuǎn)程的master分支

4.遠(yuǎn)程分支檢出

如果遠(yuǎn)程存在多個(gè)分支,使用 git clone 只會(huì)創(chuàng)建一個(gè)master分支 君珠,需要使用命令進(jìn)行遠(yuǎn)程分支檢出寝志。
git checkout -b <branch_name> <remote_name>/<remote_branch>#本地新建分支并檢出遠(yuǎn)程分支代碼
git checkout <remote_branch> #也可以使用該命令進(jìn)行檢出
對(duì)于該命令如果本地有該分支,執(zhí)行切換操作,如果本地沒(méi)有該分支材部,會(huì)查找remote上有無(wú)該分支毫缆,如果有,并將HEAD指向遠(yuǎn)程分支乐导,并建立追蹤關(guān)系苦丁,如果本地和遠(yuǎn)程都沒(méi)有,則報(bào)錯(cuò)物臂。
有時(shí)候旺拉,會(huì)發(fā)現(xiàn)明明遠(yuǎn)端有這個(gè)分支卻依然報(bào)錯(cuò),可以執(zhí)行git pull棵磷,然后再checkout

4.遠(yuǎn)程分支合并

通常最終代碼發(fā)布是使用master分支蛾狗,所以發(fā)布前需要進(jìn)行遠(yuǎn)程分支合并操作,實(shí)際是在本地分支進(jìn)行合并后然后推送到遠(yuǎn)程master上泽本,如果本地沒(méi)有檢出遠(yuǎn)程分支則需要先進(jìn)行遠(yuǎn)程分支的檢出
1.git checkout master #切換到master分支
2.git merge <branch_name> #將分支合并到master分支
3.git push origin master #將master分支推送至遠(yuǎn)程
注:origin為默認(rèn)遠(yuǎn)程倉(cāng)庫(kù)名稱(chēng)

5.遠(yuǎn)程分支刪除

如果遠(yuǎn)程分支合并完成后不再需要了淘太,可以進(jìn)行刪除操作
git push origin --delete <branch_name> #直接刪除遠(yuǎn)程分支
git push origin :<branch_name> #推送一個(gè)空分支(也代表刪除)

遠(yuǎn)程分支跟蹤

1.分支跟蹤意義

從遠(yuǎn)程分支檢出的本地分支,稱(chēng)為跟蹤分支(tracking branch)规丽。跟蹤分支是一種和遠(yuǎn)程分支有直接聯(lián)系的本地分支蒲牧。務(wù)必讓跟蹤分支和遠(yuǎn)程分支保持同名。
在跟蹤分支里輸入git push赌莺,Git會(huì)自行推斷應(yīng)該向哪個(gè)服務(wù)器的哪個(gè)分支推送數(shù)據(jù)冰抢。反過(guò)來(lái),在這些分支里運(yùn)行git pull會(huì)獲取所有遠(yuǎn)程索引艘狭,并把它們的數(shù)據(jù)都合并到本地分支中來(lái)挎扰。

2.查看跟蹤關(guān)系

git branch -vv #查看本地分支與遠(yuǎn)程分支追蹤關(guān)系

3.自動(dòng)建立跟蹤關(guān)系

1.git clone #建立本地master分支與遠(yuǎn)程master分支的跟蹤關(guān)系
2.git push -u origin <branch_name> #使用-u參數(shù)會(huì)自動(dòng)建立本地指定分支與遠(yuǎn)程同名分支的追蹤關(guān)系
3.git checkout -b <branch_name> origin/<remote_branch> #會(huì)將遠(yuǎn)程指定分支與本地指定分支建立跟蹤關(guān)系

4.手動(dòng)建立跟蹤關(guān)系

git branch --set-upstream-to origin/<branch> <branch_name> #如果省略branch,則默認(rèn)與遠(yuǎn)程的master分支建立聯(lián)系

5.切斷跟蹤關(guān)系

如果本地分支關(guān)聯(lián)的遠(yuǎn)程分支不存在了巢音,本地分支想保留遵倦,需要切換與遠(yuǎn)程分支的聯(lián)系
git branch --unset-upstream <branch_name> #此處的分支名稱(chēng)為本地分支,切斷本地分支的遠(yuǎn)程追蹤關(guān)系

6.錯(cuò)誤說(shuō)明

在使用git pushgit pull時(shí)官撼,要特別注意當(dāng)前分支是否建立了跟蹤關(guān)系梧躺,跟蹤分支名稱(chēng)是否相同。
比如當(dāng)前在本地rxy分支傲绣,此時(shí)沒(méi)有跟蹤到任何遠(yuǎn)程分支掠哥,輸入git push報(bào)錯(cuò),建議我們建立跟蹤關(guān)系

比如當(dāng)前在本地rxy分支秃诵,但是跟蹤的是master分支续搀,輸入git push報(bào)錯(cuò),因?yàn)槊Q(chēng)不匹配菠净,建議我們指定參數(shù)推送

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末禁舷,一起剝皮案震驚了整個(gè)濱河市彪杉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌榛了,老刑警劉巖在讶,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件煞抬,死亡現(xiàn)場(chǎng)離奇詭異霜大,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)革答,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)战坤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人残拐,你說(shuō)我怎么就攤上這事途茫。” “怎么了溪食?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵囊卜,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我错沃,道長(zhǎng)栅组,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任枢析,我火速辦了婚禮玉掸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘醒叁。我一直安慰自己司浪,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布把沼。 她就那樣靜靜地躺著啊易,像睡著了一般。 火紅的嫁衣襯著肌膚如雪饮睬。 梳的紋絲不亂的頭發(fā)上租谈,一...
    開(kāi)封第一講書(shū)人閱讀 52,441評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音续捂,去河邊找鬼垦垂。 笑死,一個(gè)胖子當(dāng)著我的面吹牛牙瓢,可吹牛的內(nèi)容都是我干的劫拗。 我是一名探鬼主播,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼矾克,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼页慷!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤酒繁,失蹤者是張志新(化名)和其女友劉穎滓彰,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體州袒,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡揭绑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了郎哭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片他匪。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖夸研,靈堂內(nèi)的尸體忽然破棺而出邦蜜,到底是詐尸還是另有隱情,我是刑警寧澤亥至,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布悼沈,位于F島的核電站,受9級(jí)特大地震影響姐扮,放射性物質(zhì)發(fā)生泄漏絮供。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一溶握、第九天 我趴在偏房一處隱蔽的房頂上張望杯缺。 院中可真熱鬧,春花似錦睡榆、人聲如沸萍肆。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)塘揣。三九已至,卻和暖如春宿崭,著一層夾襖步出監(jiān)牢的瞬間亲铡,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工葡兑, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留奖蔓,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓讹堤,卻偏偏與公主長(zhǎng)得像吆鹤,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子洲守,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359