在游戲中學習Git之Githug(Windows版)

在游戲中學習Git之Githug(Windows版)


1. githug安裝

  • 首先,下載Git工具,并配置Git工具安裝目下面的cmd目錄到環境變量的PATH中,這樣我們就可以在cmd下面使用git了。
  • 其次,githug是運行在ruby上的,所以我們還要安裝ruby,下載ruby,安裝時勾選“Add Ruby executables to your PATH”,忘了勾選的要配置Ruby安裝目錄下面的bin目錄到環境變量的PATH中。
  • 再次,安裝githug,在安裝githug先確認ruby好了嗎,然后在安裝githug
    • 在cmd下面輸入ruby --version查看ruby是否安裝好了,若沒有,則說明環境變量還沒有生效,注銷戶用再登錄
    • 在cmd下面輸入gem install githug安裝githug

2. githug相關說明


1. githug是用來干什么的

githug是設計給你學習Git的實用方法。它有一系列的關卡,每一關都需要你用git命令得到一個正確的答案。

2. githug關卡說明

githug一共有55關:

#1: init
#2: config
#3: add
#4: commit
#5: clone
#6: clone_to_folder
#7: ignore
#8: include
#9: status
#10: number_of_files_committed
#11: rm
#12: rm_cached
#13: stash
#14: rename
#15: restructure
#16: log
#17: tag
#18: push_tags
#19: commit_amend
#20: commit_in_future
#21: reset
#22: reset_soft
#23: checkout_file
#24: remote
#25: remote_url
#26: pull
#27: remote_add
#28: push
#29: diff
#30: blame
#31: branch
#32: checkout
#33: checkout_tag
#34: checkout_tag_over_branch
#35: branch_at
#36: delete_branch
#37: push_branch
#38: merge
#39: fetch
#40: rebase
#41: repack
#42: cherry-pick
#43: grep
#44: rename_commit
#45: squash
#46: merge_squash
#47: reorder
#48: bisect
#49: stage_lines
#50: find_old_branch
#51: revert
#52: restore
#53: conflict
#54: submodule
#55: contribute  

3. githug常用命令


  • githug: 開始闖關或進入下一關
  • githug hint: 過關提示
  • githug levels: 顯示關卡列表
  • githug reset [關卡名]: 重啟本關或者重啟到指定關卡名的關卡

4. 開始闖關


1. 第1關


  • 關卡描述:
有一個新的目錄“git_hug”被創建了,在它里面初始化一個倉庫  
  • 通關操作:
git init  

2. 第2關


  • 關卡描述:
設置你的有戶名與電子郵箱,這很重要,只有這樣你的提交才會被識別  
  • 通關操作:
git config --local user.name lavor  
git config --local user.email lavor@qq.com

3. 第3關


  • 關卡描述:
有一個名叫“README”的文件夾,你要將它加入到暫存區。  
注意:每一關都是一個新倉庫,不要在前面的關卡找文件。
  • 通關操作:
git add README  

4. 第4關


  • 關卡描述:
“README”文件已經被加入到暫存區,現在提交它。  
  • 通關操作:
git commit -m "add README"  

5. 第5關


  • 關卡描述:
從“https://github.com/Gazler/cloneme”克隆倉庫。
  • 通關操作:
git clone https://github.com/Gazler/cloneme  

6. 第6關


  • 關卡描述:
從“https://github.com/Gazler/cloneme”克隆倉庫到“my_cloned_repo”目錄。
  • 通關操作:
git clone https://github.com/Gazler/cloneme  my_cloned_repo  

7. 第7關


  • 關卡描述:
文本編輯器“vim”為所有文件創建以“.swp”結尾的文件,這些文件當前都被打開了。我們不希望他們潛入到倉庫。讓倉庫忽略“.swp”文件。  
  • 通關操作:
//由于沒有裝vim,直接用記事本打開“.gitignore”文件,在文件末尾換行并加上“*.swp”。  

8. 第8關


  • 關卡描述:
注意一些文件以“.a”為擴展名。我們希望忽略這些文件除了“lib.a”文件。    
  • 通關操作:
//由于沒有裝vim,直接用記事本打開“.gitignore”文件,在文件末尾換行并加上“*.a”,再換行,在文件末尾加上“!lib.a”。

9. 第9關


  • 關卡描述:
倉庫中有一些文件,其中一個沒有被跟蹤,它是哪個文件。
  • 通關操作:
git status    

10. 第10關


  • 關卡描述:
倉庫中有一些文件。多少文件將要被提交。 
  • 通關操作:
git status    

11. 第11關


  • 關卡描述:
一個文件從工作樹上面移除了,但是沒有從倉庫中移除。找到這個文件并移除它。  
  • 通關操作:
git status  
git add deleteme.rb  

12. 第12關


  • 關卡描述:
一個文件以外地加入到你的暫存區,找出這個文件并將它從暫存區移除。  
*注意*:不要將它從文件系統中移除,僅僅將它git中移除。
  • 通關操作:
git status  
git rm --cached deleteme.rb    

13. 第13關


  • 關卡描述:
你做了一些修改,并且向稍后再它們上面工作。你應該保存它們,但是不提交它們。    
  • 通關操作:
git stash    

14. 第14關


  • 關卡描述:
我們有一個名為“oldfile.txt”的文件。我們想要將它重命名為“newfile.txt”并保存該修改。    
  • 通關操作:
git mv oldfile.txt newfile.txt  

15. 第15關


  • 關卡描述:
你添加了一些文件到你的倉庫,但現在知道你的項目需要進行調整。創建一個新的文件夾命名為“src”,使用git將所有的".html"文件到該文件夾中。
  • 通關操作:
git mv about.html contact.html index.html src    

16. 第16關


  • 關卡描述:
你將要尋找最新提交的哈希,為此你將研究該倉庫的日志。  
  • 通關操作:
git log   

17. 第17關


  • 關卡描述:
我們有一個git倉庫,并且我們想用“new_tags”來標記當前的提交。  
  • 通關操作:
git tag "new_tag"

18. 第18關


  • 關卡描述:
倉庫中有一些標記沒有被推送到遠程倉庫,現在推送它們。  
  • 通關操作:
git push --tags origin master    

19. 第19關


  • 關卡描述:
“README”文件被提交了,但是“forgotten_file.rb”文件好像忘了提交。添加這個文件,并改正上次提交使之包含該文件。
  • 通關操作:
git add forgotten_file.rb   
git commit --amend -m "改正后提交"

20. 第20關


  • 關卡描述:
用未來的時間日期(比如明天)來提交改變。 
  • 通關操作:
git commit --date=06.13.2016T09:00:00 -m "指定提交時間為2016年6月13日9點整"

21. 第21關


  • 關卡描述:
有兩個文件要提交,目標是將每個文件添加為單獨提交,但意外地兩個文件都被添加到暫存區了。用“reset”命令將“to_commit_second.rb”文件從暫存區移除(不做提交操作)。  
  • 通關操作:
git reset HEAD to_commit_second.rb  

22. 第22關


  • 關卡描述:
你提交太快了。現在你要撤消最后一次提交,同時保持索引。 
  • 通關操作:
git reset --soft HEAD~1  

23. 第23關


  • 關卡描述:
文件已經被修改了,但是你不想保存該修改。從最后一次提交中檢出“config.rb”文件。    
  • 通關操作:
git checkout config.rb  

24. 第24關


  • 關卡描述:
項目有一個遠程倉庫,找到它。  
  • 通關操作:
git remote -v    

25. 第25關


  • 關卡描述:
遠程倉庫有一個與之關聯的url。輸入遠程倉庫“remote_location” 的url。  
  • 通關操作:
git remote -v    

26. 第26關


  • 關卡描述:
你需要從“origin”倉庫拉下改變到本地倉庫。    
  • 通關操作:
git pull origin master  

27. 第27關


  • 關卡描述:
添加一個url為“https://github.com/githug/githug”的遠程倉庫,并為該遠程倉庫命名為“origin”。  
  • 通關操作:
git remote add origin https://github.com/githug/githug   

28. 第28關


  • 關卡描述:
你的本地“master”分支與遠程倉庫“origin”的“master” 分支不一致,請用遠程倉庫“origin”的“master” 分支來改變你的提交,并將提交推送到遠程倉庫。  
  • 通關操作:
git rebase origin/master  
git push origin master  

29. 第29關


  • 關卡描述:
自最后一次提交后,“app.rb”文件發生了一些改變。找出該文件那些行被改變了。  
  • 通關操作:
git diff  

30. 第30關


  • 關卡描述:
有人將密碼放進了“config.rb”文件中,找出是誰。  
  • 通關操作:
git blame config.rb   

31. 第31關


  • 關卡描述:
有一個新的目錄“git_hug”被創建了,在它里面初始化一個倉庫  
  • 通關操作:
git init  

32. 第32關


  • 關卡描述:
你想在一段可能打破一些東西的代碼上工作,創建一個“test_code”分支。    
  • 通關操作:
git branch test_code  

33. 第33關


  • 關卡描述:
你需要在“1.2”版本的應用程序上修復一個bug。檢出“v1.2”標記。  
  • 通關操作:
git checkout v1.2   

34. 第34關


  • 關卡描述:
你需要在“1.2”版本的應用程序上修復一個bug。檢出“v1.2”標記(注意:有一個名為“v1.2”的分支)。  
  • 通關操作:
git checkout tags/v1.2  

35. 第35關


  • 關卡描述:
在前一個提交你忘了創建分支,并在該分支上進行提交操作。在最后一次提交前創建一個名為“test_branch”的分支。    
  • 通關操作:
git branch test_branch HEAD~1  

36. 第36關


  • 關卡描述:
在你的項目中創建了太多的分支。有一個舊的名為“delete_me”的分支,你應該刪除它。  
  • 通關操作:
git branch -d delete_me    

37. 第37關


  • 關卡描述:
在本地分支上你做了一些改變,并且想共享它,但是不準備將它合并到“master”分支上。  
  • 通關操作:
git push origin test_branch:test_branch  

38. 第38關


  • 關卡描述:
在“feature”分支上有一個文件,讓我們將它合并到“master”分支上。  
  • 通關操作:
git merge feature  

39. 第39關


  • 關卡描述:
好像有一個新的分支被推送到了遠程倉庫。得到與本地倉庫的改變,但是不合并它們。  
  • 通關操作:
git fetch origin   

40. 第40關


  • 關卡描述:
我們用“git rebase”工作流與“feature”分支準備進入“master”分支。將“feature”分支上的改變合并到“master”上。  
  • 通關操作:
git rebase master feature     

41. 第41關


  • 關卡描述:
優化你的倉庫是如何包裝的,確保多余的包被刪除。
  • 通關操作:
git repack -d  

42. 第42關


  • 關卡描述:
你的新功能是不值得花時間的,你將要刪除它。但是它有一個提交填充了“README”文件,你想要將這個提交同樣應用到“master”分支上。  
  • 通關操作:
git log --all  
git cherry-pick ca32a6dac7b6f97975edbe19a4296c2ee7682f68    


43. 第43關


  • 關卡描述:
你項目的截止日期快到了,你想評估你的代碼中還有多少“TODO”剩下。  
  • 通關操作:
git grep TODO    

44. 第44關


  • 關卡描述:
改正你第一次(非根)提交信息中的錯誤。    
  • 通關操作:
git log  
git rebase -i a3d1ecb  




45. 第45關


  • 關卡描述:
你做了幾次提交,但是想將這些修改都合并到一個提交中。  
  • 通關操作:
git log  
git rebase -i 9760312    




46. 第46關


  • 關卡描述:
合并“long-feature-branch”分支中所有的提交到一個提交中。  
  • 通關操作:
git merge --squash long-feature-branch  
git commit -m "merge squash"  

47. 第47關


  • 關卡描述:
你做了幾次提交,但是順序錯了。請為你的提交重新排序。    
  • 通關操作:
git log  
git rebase -i b49d328  
git log  



48. 第48關


  • 關卡描述:
一個bug在某個地方被引進,你知道運行“ruby prog.rb 5”應該輸出“15”。你同樣可以運行“make test”。進入bug的提交的哈希的前7個字母是什么。  
  • 通關操作:
git log  
git bisect start master f608824  
git bisect run make test  

PS:雖然操作正確,也找到了錯誤的提交,但是卻不能通過本關,應該是沒有“make”命令的原因。直接利用“githug reset stage_lines”調到第49關,之后即使闖過了第49關進入下一關時還是會進入第48關,所以第49關及以后,都需要通過“githug reset 關卡名”來進入指定關卡。


49. 第49關


  • 關卡描述:
你在一個單獨的文件里做了一些修改,這些修改屬于兩個功能。但是這些修改都沒有被暫存,暫存屬于第一個功能的修改。    
  • 通關操作:
git status  
git add feature.rb -p  
e  



50. 第50關


  • 關卡描述:
你一直在一個分支工作,被一個主要問題弄得心煩意亂,并且你忘了這個分支的名字。切換回那個分支。  
  • 通關操作:
git reflog  
git checkout solve_world_hunger  


51. 第51關


  • 關卡描述:
你做了多次提交,但是想要撤銷中間的提交。所有的提交已經被推送,你不能改變現存的歷史。  
  • 通關操作:
git log  
git revert  59f058e  
git log  



52. 第52關


  • 關卡描述:
你決定通過運行“git reset --hard HEAD^”來刪除最新的一次提交(這是不明智的)。
稍后你改變了想法,你想要回滾那次提交。重新存儲被刪除的提交。  
  • 通關操作:
git reflog  
git checkout e185df9   


53. 第53關


  • 關卡描述:
你需要合并“mybranch”分支到當前分支(“master”分支)。  
但是“mybranch”分支中可能有一些錯誤的改變,這可能引起沖突。  
解決合并中你遇到的沖突,并完成合并操作。    
  • 通關操作:
git merge mybranch    
vim poem.txt  
git add poem.txt  
git commit -m "add poem.txt"  



54. 第54關


  • 關卡描述:
你想要將“https://github.com/jackmaney/githug-include-me”倉庫的文件放進“./githug-include-me”目錄。  
這樣做,不通過克隆倉庫或者復制遠程倉庫文件到本地倉庫。  
  • 通關操作:
git submodule add https://github.com/jackmaney/githug-include-me githug-include-me   

55. 第55關


  • 關卡描述:
這是最后一關,目標是通過在Github上發出一個pull request請求來為該倉庫做貢獻。  
注意這一關是被設計用來鼓勵你為Githug做有效的貢獻,而不是用來測試你創建 pull request請求的能力。  
可以被接受的貢獻有關卡,bug修復,文檔改進。   

更過精彩內容盡在我的github倉庫:https://github.com/lavor-zl/Github-Git

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,565評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,115評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,577評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,514評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,234評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,621評論 1 326
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,641評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,822評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,380評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,128評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,319評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,879評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,548評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,970評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,229評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,048評論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,285評論 2 376

推薦閱讀更多精彩內容