git 知識(shí)點(diǎn)

參考
https://github.com/geeeeeeeeek/git-recipes/wiki

git push [遠(yuǎn)程倉庫名] [本地分支名] : [遠(yuǎn)程分支名]

push本地develop分支到遠(yuǎn)程origin倉庫的dev分支无午。

git push origin develop:dev

如果終端所在的當(dāng)前分支就是要push到遠(yuǎn)程倉庫的本地分支的話瘪阁,一般省略掉本地分支名沦寂,直接用以下命令,將本地當(dāng)前分支push到遠(yuǎn)程的dev分支上去掐暮。

git push origin dev

如果想指定將本地分支上的某個(gè)commit push到遠(yuǎn)程分支上的話馅扣,比如將最新一次commit push到遠(yuǎn)程去,可以用:

git push origin HEAD:dev镐侯。

以此類推奕巍,push 最新一次commit的前一次可以用:

git push origin  HEAD^:dev

刪除掉遠(yuǎn)程dev分支可用以下命令吟策,該命令可以理解為將本地的空push到遠(yuǎn)程分支上,即的止,刪除遠(yuǎn)程分支檩坚。

git push origin : dev 

push后面加參數(shù)-u:

git push -u origin develop : dev

加上該參數(shù),除了push之外诅福,還做了一件事(由-u參數(shù)控制):
Branch develop set up to track remote branch dev from origin
即匾委,創(chuàng)建了track。
這樣以后氓润,就可以直接使用“git pull”了赂乐,該命令會(huì)自動(dòng)pull遠(yuǎn)程的dev分支到本地的develop分支上。
若在push時(shí)不加-u參數(shù)咖气,則在“git pull”時(shí)挨措,將會(huì)提示:
There is no tracking information for the current branch. Please specify which branch you want to merge with.
也就是,在使用“git pull”時(shí)崩溪,需要明確指明是從哪個(gè)遠(yuǎn)程分支上去拉:

git pull origin dev

也可以set tracking information for this branch:

git branch --set-upstream-to=origin/dev develop

push后面加參數(shù)-f:

git push -f origin HEAD:dev

-f參數(shù)即force之意浅役,執(zhí)行強(qiáng)制push,這樣會(huì)沖掉遠(yuǎn)程已提交的版本伶唯。

git remote add <shortname> <url>

給本地倉庫添加一個(gè)遠(yuǎn)程倉庫觉既,<shortname> 給遠(yuǎn)程倉庫起一個(gè)簡(jiǎn)潔的名字,默認(rèn)用origin這個(gè)名字來代表遠(yuǎn)程倉庫抵怎,<url>遠(yuǎn)程倉庫的地址奋救。
like this:

git remote add origin https://github.com/Zouyiran/learngit

git remote 列出當(dāng)前這個(gè)本地倉庫下所有的遠(yuǎn)程倉庫的名字,比如如果只有origin反惕,那就會(huì)顯示origin這個(gè)遠(yuǎn)程倉庫,如果想看倉庫具體的url地址的話演侯,用如下命令:

git remote -v

git checkout -b [本地跟蹤分支名] [遠(yuǎn)程倉庫名]/[遠(yuǎn)程分支名]

checkout是與當(dāng)前工作區(qū)有關(guān)的操作命令姿染,用于更新工作區(qū)

git checkout -b develop origin/dev

以上命令做了兩件事:
首先,創(chuàng)建(由-b參數(shù)控制)本地分支track(跟蹤)遠(yuǎn)程分支悬赏,Branch develop set up to track remote branch dev from origin.
其次狡汉,切換(checkout)到該本地分支上,Switched to a new branch 'develop'.

git checkout -b develop 

以上命令闽颇,單純的在本地創(chuàng)建develop分支盾戴,并切換到這個(gè)分支上去。

git checkout develop

以上命令兵多,針對(duì)本地已經(jīng)存在develop分支的情況尖啡,直接將工作區(qū)的內(nèi)容切為develop分支。

git checkout HEAD

以上命令剩膘,將工作區(qū)的內(nèi)容切為當(dāng)前分支的最新commit衅斩。
這個(gè)操作適用于,基于最新的commit怠褐,本地工作區(qū)又做了一些更改畏梆,且想放棄這些更改,回到最新commit的狀態(tài)奈懒。

以此類推奠涌,

git checkout HEAD^

以上命令,將工作區(qū)的內(nèi)容切為當(dāng)前分支的最新commit的上一次commit磷杏。

git checkout -- <某些文件>

以上命令溜畅,將工作區(qū)中某些文件的修改拋棄掉,讓這些文件與暫存區(qū)或者版本庫保持一致茴丰。
其中达皿,如果暫存區(qū)有,就回到與暫存區(qū)一致的狀態(tài)贿肩,否則峦椰,回到到版本庫中最新的commit一致的狀態(tài)。

git reset <commit version>

看這里

reset是與版本庫有關(guān)的操作命令汰规。

它會(huì)將版本庫的HEAD指針定位到某個(gè)commit版本上汤功。
比如:HEAD^ 前一個(gè)commit,HEAD^^ 前前一個(gè)commit溜哮,以此類推...

重點(diǎn)介紹三個(gè)參數(shù):

  • --soft 只有版本庫變了滔金,暫存區(qū)和工作區(qū)都不會(huì)被改變。
  • --mixed (默認(rèn))版本庫和暫存區(qū)變了茂嗓,工作區(qū)不會(huì)被改變餐茵。
  • --hard 版本庫、暫存區(qū)和工作目錄都被改變述吸,都變成定位到的那個(gè)commit版本了忿族。

我一般用默認(rèn)和--hard這兩個(gè)比較多。

git revert <commit version>

git revert 比 git reset 要安全,同樣是針對(duì)本地版本庫的操作道批,它會(huì)將撤銷commit的操作作為新的commit错英,添加到之前最新commit之后。

所以隆豹,可以這樣去理解:

  • git revert:把撤銷已有的commit作為新的commit椭岩。
  • git reset:純粹的撤銷已有的commit。

git rebase

看這里

理解rebase的關(guān)鍵點(diǎn)在于:
rebase會(huì)為當(dāng)前分支上每一個(gè)提交創(chuàng)建一個(gè)新的提交璃赡,重寫了項(xiàng)目歷史判哥。

看圖說話:

master和feature分支
在feature分支上reabase master分支

可以看出,通過rebase命令鉴吹,原feature分支上的三次提交都被重新改寫了
(圖中姨伟,通過在每個(gè)commit點(diǎn)中間畫※號(hào)來表示提交的內(nèi)容跟原來不一樣)。
去看diff的話豆励,就可以發(fā)現(xiàn)夺荒,rebase之后的diff跟rebase之前的同一次commit的diff不一樣了。
這很好理解良蒸,比如就拿feature分支的第一次commit來說技扼,rebase之前的這次commit是基于第二個(gè)白色點(diǎn)的,而rebase之后的這次commit是基于第二個(gè)藍(lán)色點(diǎn)的嫩痰。所以diff當(dāng)然不一樣了剿吻。

合并多個(gè)commit

看這里
git rebase -i xxxx

修改歷史commit信息

修改最近一次commit信息,很簡(jiǎn)單:

git commit --amend

但是如果要修改歷史commit中的某一次提交信息怎么操作串纺?
比如丽旅,我想要修改倒數(shù)第四次commit中的提交信息。
首先纺棺,

git rebase -i HEAD~4

以上命令執(zhí)行之后榄笙,會(huì)出現(xiàn):

pick 762eb478 id: xxx cause: xxx solution: xxx 
pick ba5a91a3 id: xxx  cause: xxx  solution: xxx 
pick 82911374 id: xxx  cause: xxx  solution: xxx 
pick b06e264b id: xxx  cause: xxx  solution: xxx 

這里,我要修改倒數(shù)第四次的commit信息祷蝌,
因此將以上出現(xiàn)信息的第一行中的pick改為edit茅撞。然后保存退出。
這時(shí)巨朦,通過git log米丘,可以發(fā)現(xiàn)最后一次commit已經(jīng)變成之前的倒數(shù)第四個(gè)了。
再使用:

git commit --amend

來對(duì)commit信息進(jìn)行修改糊啡。
修改完成之后拄查,怎么回到當(dāng)初呢?
使用:

git rebase --continue

搞定棚蓄。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末靶累,一起剝皮案震驚了整個(gè)濱河市腺毫,隨后出現(xiàn)的幾起案子癣疟,更是在濱河造成了極大的恐慌挣柬,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件睛挚,死亡現(xiàn)場(chǎng)離奇詭異邪蛔,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)扎狱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門侧到,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人淤击,你說我怎么就攤上這事匠抗。” “怎么了污抬?”我有些...
    開封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵汞贸,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我印机,道長(zhǎng)矢腻,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任射赛,我火速辦了婚禮多柑,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘楣责。我一直安慰自己竣灌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開白布秆麸。 她就那樣靜靜地躺著初嘹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蛔屹。 梳的紋絲不亂的頭發(fā)上削樊,一...
    開封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音兔毒,去河邊找鬼漫贞。 笑死,一個(gè)胖子當(dāng)著我的面吹牛育叁,可吹牛的內(nèi)容都是我干的迅脐。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼豪嗽,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼谴蔑!你這毒婦竟也來了豌骏?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤隐锭,失蹤者是張志新(化名)和其女友劉穎窃躲,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體钦睡,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蒂窒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了荞怒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片洒琢。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖褐桌,靈堂內(nèi)的尸體忽然破棺而出衰抑,到底是詐尸還是另有隱情,我是刑警寧澤荧嵌,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布呛踊,位于F島的核電站,受9級(jí)特大地震影響完丽,放射性物質(zhì)發(fā)生泄漏恋技。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一逻族、第九天 我趴在偏房一處隱蔽的房頂上張望蜻底。 院中可真熱鬧,春花似錦聘鳞、人聲如沸薄辅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽站楚。三九已至,卻和暖如春搏嗡,著一層夾襖步出監(jiān)牢的瞬間窿春,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工采盒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留旧乞,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓磅氨,卻偏偏與公主長(zhǎng)得像尺栖,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子烦租,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • git常用命令 GIT常用命令備忘:http://stormzhang.com/git/2014/01/27/gi...
    新篇章閱讀 8,478評(píng)論 1 26
  • 本片內(nèi)容轉(zhuǎn)自CSDN http://blog.csdn.net/ithomer/article/details/7...
    五娃兒閱讀 4,933評(píng)論 2 88
  • 1 露娜看了一眼窗外的雨延赌,似乎比下午的時(shí)候更大了些除盏,樓下有坑坑洼洼的小水坑,路面上鋪滿了金黃色的樹葉挫以,穿著雨靴的婦...
    夏微安閱讀 281評(píng)論 0 0
  • 早安
    楓橋83閱讀 205評(píng)論 0 0
  • 在世界上者蠕,有這樣一種行業(yè),她們默默無聞屡贺,拿著微博的薪資蠢棱,辛苦度日,無人注意甩栈,她們便是服務(wù)業(yè)! ...
    夔越閱讀 138評(píng)論 0 0