通關(guān)git抱抱

'githug'是一個(gè)跟'learnyournode'差不多的通關(guān)github,在浪費(fèi)了一個(gè)可以看電影的下午牵囤,我把這個(gè)并沒有什么卵用的東西寫了寫。你需要做的很簡(jiǎn)單:follow the instructions滞伟。首先check一下電腦上ruby的環(huán)境揭鳞,然后直接安裝

$ gem install githug

$githug

然后就能看見一個(gè)闖關(guān)的基本界面,在每次完成后記得問githug這樣對(duì)不對(duì)就可以進(jìn)行到下一關(guān)了梆奈。

Level 1: initialize an empty repository

$ git init

Level 2 Set up name and email

$ git config user.name "CatAmo10"

$ git config user.email CatAmo10@example.com

Level 3 add 'README' files in folder to staging area

$ git add README

或者一般情況下野崇,當(dāng)我merge出了錯(cuò)我會(huì)直接用

$ git add .

把所有untracked文件都加上

Level 4 Commit file

$ git commit -m "your own commit message"

一般如果說(shuō)沒有change,只是修改文件亩钟,我會(huì)用

$ git commit -am "your own commit message"

Level 5 Clone a repo

$ git clone https://github.com/Gazler/clonename

Level 6 clone to a folder

$ git clone https://github.com/Gazler/clonename my_cloned_repo

Level 7 ignore files

修改文件.gitirnore

$ vim .gitignore

在文件中加上

*.swp

忽略所有尾綴為'.swp'的文件

Level 8

和上一步操作一樣乓梨,只需要忽略所有'.a'文件,并加上

!lib.a

Level 9 Status

$ git status

git status
answer the githug question
Level 10

跟上一步還是一樣的清酥,查看一下status

Level 11 remove files

第一步扶镀,檢查被remove的文件

$ git checkout

第二步

$ git rm deleteme.rb

Level 12 remove files added to staging ara which you do not want

$git rm --cached deleteme.rb

Level 13 save changes without commit

$ git stash

Level 14 rename file name

git mv oldfile.txt newfile.txt

Level 15 Restructure, move all the files

$ mkdir src

$ git mv *.html src

Level 16 log

$ git log

Level 17 tag

$ git tag new_tag

Level 18 push tags

$ git push --tags

Level 19 Commit amend

$ git add forgotten_file.rb

$ git commit --amend

Level 20 commit files with specific dates

$ git commit --date=03.01.2016T14:09:05

Level 21 reset

$ git reset HEAD to_commit_second.rb

Level 22 reset soft

如果放回working directory應(yīng)該就要checkout這個(gè)file了,但是reset soft只是放回了staging area

$ git reset --soft HEAD^

Level 23 checkout files

$ git checkout config.rb

Level 24 remote

$ git remote

Level 25 remote url

$ git remote url

Level 26 pull changes

$ git pull origin master

Level 27 add a new remote

$ git remote add origin https://github.com/githug/githug

Level 28 rebase commit onto master

$ git rebase origin/master master
$ git push origin master

Level 29 diff

$ git diff

Level 30 blame

$ git blame config.rb

find the name to be blamed
Level 31 create a branch

$ git brahch test_code

Level 32 switch to another branch

$git branch mybranch

$ git checkout mybranch

Level 33 checkout a tag

$ git checkout v1.2

Level 34 checkout a tag with the same-name branch

$ git checkout tags/v1.2

Level 35 create a branch at previou commit

$ git branch test_branch HEAD^

Level 36 delete a branch

$ git branch -d delete_me

Level 37 push specific branch to remote

$ git push origin test_branch

Level 38 merge

$ git merge feature

Level 39 fetch

我覺得fetch和pull的區(qū)別在于焰轻,pull相當(dāng)于fetch了之后再merge臭觉,所以此處應(yīng)該有fetch

$ git fetch origin

LEvel 40 rebase

$ git rebase feature

$ git checkout feature

$ git rebase -i master

Level 41 repack

$ git repack

$ git repack -d

Level 42 cherry-pick

我第一次聽到這么好聽的命令,但是...我依舊沒太明白這個(gè)優(yōu)雅的命令有什么大用途,我簡(jiǎn)單的認(rèn)為這是一種附有強(qiáng)烈處女情結(jié)的merge蝠筑,只挑某個(gè)branch上的一個(gè)commit引入master而不是僅僅去merge兩個(gè)分支忆肾。我猜想log會(huì)變得更好看一些。
首先要把那個(gè)看上去does not make any sense的長(zhǎng)長(zhǎng)的SHA碼找到

$ git checkout new-feature

$ git log

$ git checkout master

$ git cherry-pick ca32a6d

Level 43 grep check TODOs

$ git grep TODO

Level 44 rename the commit

again菱肖、還是要check一下log

$ git log

復(fù)制第一個(gè)commit地址

$ git rebase i ffc13cc

現(xiàn)在你能看到文件中幾個(gè)命令客冈,文件是按照命令順序自上而下運(yùn)行,所以只要在第一句前面加上reword就行了

Level 45 merge multiple commit to one

還記得上一步中的文件中有一個(gè)命令叫做squash嗎稳强?對(duì)squash標(biāo)準(zhǔn)解釋是受擠壓场仲,就是簡(jiǎn)單地把幾次commit擠壓成一次

$ git log

$ git rebase i

把最終輸出的那唯一一個(gè)commit留著,其他均改成squash

Level 46 merge squash, merge all commits

$ git merge --squash long-feature-branch

Level 47 reorder

$ git rebase i 85d671

記得check一下log退疫,然后直接修改文件的命令順序渠缕,自上而下

Level 48 bisect

$ git bisect start

如果這個(gè)時(shí)候直接 'git bisect run make test'就會(huì)跳出幫助,必須有set bad或者good之后才能run test

ruby prog.rb 5

git bisect bad

$ git log

$ git checkout 5db7a7c

ruby prog.rb 5

git bisect good
...

總之一直循環(huán)到可以運(yùn)行

$ git bisect run make test

Level 49 stage one file in first feature

$ git add -p

然后選擇'n'褒繁,手動(dòng)修改亦鳞,直接將second feature刪掉

Level 50 find an old branch

$ git reflog

$ git checkout solve_world_hunger

Level 51 revert, redo middle commit not changing existing history

$ git revert HEAD^1

Level 52 restore a deteleted commit

$ git log

$ git checkout 3d5de5f

Level 53 conflict

$ git merge mybranch

發(fā)現(xiàn)在poem.txt中又conflict,所以現(xiàn)在需要修改文件poem.txt

$ vim poem.txt

為以防萬(wàn)一棒坏,再加上所有untracked文件

$ git add .

$ git commit

$ git merge mybranch

Level 54 submodule

git submodule https://github.com/jackmoney/githug-include-me ./githug-include-me

當(dāng)?shù)竭@一步的時(shí)候就結(jié)束了燕差,你需要做的就是fork這個(gè)github項(xiàng)目,并加上一些自己的Level

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末坝冕,一起剝皮案震驚了整個(gè)濱河市徒探,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌喂窟,老刑警劉巖测暗,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異磨澡,居然都是意外死亡碗啄,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門稳摄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)稚字,“玉大人,你說(shuō)我怎么就攤上這事秩命∥竟玻” “怎么了褒傅?”我有些...
    開封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵弃锐,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我殿托,道長(zhǎng)霹菊,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮旋廷,結(jié)果婚禮上鸠按,老公的妹妹穿的比我還像新娘。我一直安慰自己饶碘,他們只是感情好目尖,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著扎运,像睡著了一般瑟曲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上豪治,一...
    開封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天洞拨,我揣著相機(jī)與錄音,去河邊找鬼负拟。 笑死,一個(gè)胖子當(dāng)著我的面吹牛掩浙,可吹牛的內(nèi)容都是我干的花吟。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼矾麻,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼险耀!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起玖喘,我...
    開封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤累奈,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后澎媒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體搞乏,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年戒努,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了请敦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖侍筛,靈堂內(nèi)的尸體忽然破棺而出萤皂,到底是詐尸還是另有隱情,我是刑警寧澤匣椰,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布裆熙,位于F島的核電站,受9級(jí)特大地震影響禽笑,放射性物質(zhì)發(fā)生泄漏弛车。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一蒲每、第九天 我趴在偏房一處隱蔽的房頂上張望纷跛。 院中可真熱鬧,春花似錦邀杏、人聲如沸贫奠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)唤崭。三九已至,卻和暖如春脖律,著一層夾襖步出監(jiān)牢的瞬間谢肾,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工小泉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留芦疏,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓微姊,卻偏偏與公主長(zhǎng)得像酸茴,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子兢交,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

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