git小白非常適合的一個(gè)練習(xí)

說來慚愧贺氓,以前弄git罗洗,老是焦頭爛額教寂,后來某只人肉wiki介紹了一個(gè)網(wǎng)站籍滴,http://learngitbranching.js.org/,發(fā)現(xiàn)簡(jiǎn)直是git小白的福音贰镣。

原來一直都是看各種git介紹的文章似懂非懂呜象,真正用的時(shí)候腦子也轉(zhuǎn)不過彎來。這個(gè)網(wǎng)站的好處是你可以盡情地練習(xí)~

前提條件是知道git add和git commit碑隆,git add 是把文件放到暫存區(qū)恭陡,而git commit是把文件從暫存區(qū)到倉(cāng)庫

下面的內(nèi)容是我學(xué)習(xí)的筆記。

git commit

某個(gè)同學(xué)說上煤,你就把git記錄看成無數(shù)的commit休玩,然后branch相當(dāng)于指針,git就相當(dāng)于commit們和指向它的指針們劫狠,后來想想覺得挺有道理的

我平時(shí)提交的時(shí)候拴疤,都是這樣提交的

git commit -m "message"

這個(gè)游戲里面簡(jiǎn)化掉了

git commit

然后藍(lán)色背景的表示初始狀態(tài),紅色的表示要達(dá)成的目標(biāo)
比如第一關(guān)独泞,紅色背景比藍(lán)色北京多了兩個(gè)結(jié)點(diǎn)呐矾,所以我們就執(zhí)行兩次commit


還有一個(gè)是當(dāng)前指針指向,git一定會(huì)有一個(gè)當(dāng)前指針懦砂,

git branch

branch理解為git的分支凫佛,就是在一個(gè)commit上面有兩個(gè)指針,為啥總覺得像一條路有了岔路口
創(chuàng)建新分支有兩種方式孕惜,比如創(chuàng)建newBranchName的分支

git branch newBranchName
git checkout newBranchName

第一行是創(chuàng)建新分支,第二行是把當(dāng)前指針指向新分支
它們可以用一行解決

git checkout -b newBranchName

在新的指針上面繼續(xù)commit晨炕,就相當(dāng)于開了一條新路

git merge

開完新路之后可以合并衫画,合并的一種方式是git merge

圖3

如上圖所示,如果我們master分支想要合并bugFix的提交瓮栗,那么可以

git merge bugFix

然后你就發(fā)現(xiàn)master這里新建了一個(gè)提交削罩,這個(gè)提交又是bugFix的下一個(gè)提交瞄勾,又是master的下一個(gè)提交


git rebase

git merge在很多分支的時(shí)候,會(huì)導(dǎo)致分支很亂弥激,而第二種合并分支的方法是 git rebase进陡。Rebase 實(shí)際上就是取出一系列的提交記錄,“復(fù)制”它們微服,然后在另外一個(gè)地方逐個(gè)的放下去趾疚。
如下圖,

image.png

如果用rebase合并的話

git rebase master

結(jié)果如下圖


關(guān)于rebase以蕴,我的理解是將一個(gè)分支放到另外一個(gè)分支下面糙麦,其實(shí)rebase后面是帶兩個(gè)參數(shù)的

git rebase branch1 branch2

然后他們的分支就會(huì)按照,branch1丛肮,branch2的順序排列赡磅,如果branch2省略,那么就指代當(dāng)前分支宝与。如上面的例子焚廊, git rebase master,此時(shí)指針在bugFix后面习劫,所以最終的結(jié)果是master在前咆瘟,bugFix在后。

HEAD

有的時(shí)候會(huì)提醒分離的HEAD榜聂,其實(shí)HEAD是當(dāng)前的指向搞疗,它可以指向提交,也可以指向分支须肆。
如下圖匿乃,如果用git checkout C1的話,HEAD就從分支master脫離豌汇。原來HEAD指向master的時(shí)候幢炸,master指向C1, 所以它本質(zhì)是指向C1的。

^和~

如果我們想要HEAD指向當(dāng)前提交的上一個(gè)提交

比如說現(xiàn)在我們的HEAD指向了master拒贱,我們想要指向C1宛徊,那么

git checkout master^

就會(huì)變成

image.png

當(dāng)然我們用

git checkout HEAD^

也能做到
如果我們想向前幾個(gè)分支,那么可以使用~逻澳,比如向前移動(dòng)兩個(gè)分支

git checkout HEAD~2

git branch -f

有的時(shí)候我們想移動(dòng)分支闸天,那么就用到git branch -f了,它允許我們強(qiáng)制移動(dòng)分支斜做。
具體用法是

git branch -f branchName Location

比如我們想讓master分支移動(dòng)到HEAD指向的上一個(gè)提交苞氮。

git branch -f master HEAD^

有了這個(gè)命令以后,我們就可以讓分支的指向自由移動(dòng)了~
因此把



變成

相信也不難吧~

git checkout HEAD^
git branch -f master C6
git branch -f bugFix C0

get reset和git revert

他們都是用來撤銷commit瓤逼,不同的是笼吟,git reset適合本地的库物,而git revert適合遠(yuǎn)程的,也就是說如果 git reset適用于并沒有同步到遠(yuǎn)程的commit贷帮,
比如戚揭,回退一個(gè)提交

git reset HEAD~1

reset以后,當(dāng)前分支指針指向的就是你reset的時(shí)候提交的
你還可以通過傳入這些標(biāo)記來修改你的緩存區(qū)或工作目錄:

--soft – 緩存區(qū)和工作目錄都不會(huì)被改變
--mixed – 默認(rèn)選項(xiàng)撵枢。緩存區(qū)和你指定的提交同步民晒,但工作目錄不受影響
--hard – 緩存區(qū)和工作目錄都同步到你指定的提交

而利用revert

git revert HEAD~1

git cherry-pick

cherry-pick能夠?qū)⑵渌种У奶峤粡?fù)制到當(dāng)前分支下面
比如下圖



我們希望
只把side分支的C2和C4提交合并到master

git cherry-pick C2 C4

得到


交互式git rebase

當(dāng)你想要改變當(dāng)前分支的提交的時(shí)候,這個(gè)可以做到诲侮,比如說你想更改最近三個(gè)提交镀虐,那么

git rebase -i HEAD~3

然后再文本編輯器編輯就好了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市沟绪,隨后出現(xiàn)的幾起案子刮便,更是在濱河造成了極大的恐慌,老刑警劉巖绽慈,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件恨旱,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡坝疼,警方通過查閱死者的電腦和手機(jī)搜贤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钝凶,“玉大人仪芒,你說我怎么就攤上這事「荩” “怎么了掂名?”我有些...
    開封第一講書人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)哟沫。 經(jīng)常有香客問我饺蔑,道長(zhǎng),這世上最難降的妖魔是什么嗜诀? 我笑而不...
    開封第一講書人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任猾警,我火速辦了婚禮,結(jié)果婚禮上隆敢,老公的妹妹穿的比我還像新娘发皿。我一直安慰自己,他們只是感情好拂蝎,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開白布雳窟。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪封救。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,255評(píng)論 1 308
  • 那天捣作,我揣著相機(jī)與錄音誉结,去河邊找鬼。 笑死券躁,一個(gè)胖子當(dāng)著我的面吹牛惩坑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播也拜,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼以舒,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了慢哈?” 一聲冷哼從身側(cè)響起蔓钟,我...
    開封第一講書人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎卵贱,沒想到半個(gè)月后滥沫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡键俱,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年兰绣,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片编振。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡缀辩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出踪央,到底是詐尸還是另有隱情臀玄,我是刑警寧澤,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布杯瞻,位于F島的核電站镐牺,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏魁莉。R本人自食惡果不足惜睬涧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望旗唁。 院中可真熱鬧畦浓,春花似錦、人聲如沸检疫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至夺溢,卻和暖如春论巍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背风响。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工嘉汰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人状勤。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓鞋怀,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親持搜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子密似,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

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

  • 心情不好,頭痛難忍葫盼,覺著自己太low了残腌,說話不到位,沒有把對(duì)方說倒剪返,說的明白废累,心里一陣懊惱,煩躁脱盲。想把工作辭掉自己...
    藍(lán)海心理閱讀 217評(píng)論 0 0
  • 大學(xué)邑滨,是在外地上的。一個(gè)人钱反,無依無著掖看。 家鄉(xiāng)是座小城,山川不美面哥,物產(chǎn)不豐哎壳。只有波折的馬路還在隱約透露著煤炭落日的余...
    陛陛陛下啊閱讀 197評(píng)論 0 1
  • 在這個(gè)治安混亂,小偷尚卫,騙子猖獗的社會(huì)归榕,手機(jī)被盜基本上是家常便飯。經(jīng)常在空間吱涉,朋友圈中看到某某手機(jī)被盜了刹泄,有的人還不...
    小七要快樂閱讀 12,563評(píng)論 99 336