現在,Git 大行其道,很有一統天下之勢。
若是你的技能樹上 Git 和 Github 的圖標尚未點亮的話,你都很差意思說你是程序員。
別說互聯網企業,我接觸到的許多傳統企業都在從 SVN,Clear Case 等遷移到 Git 上,甚至大廠還會有一個團隊去定製適合本身企業的 Git 服務器。git
不少人簡歷上寫的「精通 Git 與 Github」,但若是你問他熟悉到什麼程度的話,回答一般是「就是會用經常使用的 add
,commit
,push
操做」。程序員
但工做中咱們會遇到一些更加複雜的場景:github
* 忽略某些文件 * 建立,刪除分支 * 找到最後修改某行代碼的人 * commit 後發現裏邊包含一個不該該提交的文件 * commit 後發現少提交了一些文件 * 一個文件中的屢次有改動,怎麼作到只提交其中的一部分? * 怎樣整理提交記錄使其更加整潔? * 快速定位是哪一次提交引入了 bug * ...
做爲一線程序員,咱們要如何快速學習 Git 以發揮其最大威力呢?編程
今天我就要向你們介紹一個工具,準確說應該是「遊戲」,名字叫「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
首先咱們須要來安裝這個遊戲,githug
是用 Ruby 編寫的,可經過以下命令安裝:gem install githug
ide
若是遇到權限問題,請加上sudo
:sudo gem install githug
工具
安裝成功後,在 Terminal 裏進入你經常使用的目錄,輸入githug
,會提示遊戲目錄不存在,是否要建立一個,輸入y
而後回車:
根據提示cd git_hug
進入遊戲目錄,準備開始遊戲。學習
在開始前咱們還須要瞭解遊戲的一些基本操做:fetch
play - 默認命令,檢查是否過關ui
hint - 顯示過關提示
reset - 重啓本關,或者重啓到指定的某關
levels - 顯示關卡列表
來試一下,githug reset
:
我以第一關爲例子給你們演示一下玩法。
第一關的名稱是:init
,提示是:「一個新目錄 git_hug 被建立了,請把它初始化爲一個空倉庫」。
假設如今我不知道該怎麼過關,我能夠查看過關提示:
指示是:「你能夠輸入 git
命令來查看 git
命令列表」。
看最後一行,原來用 git init
就能夠初始化一個空倉庫,接着輸入 githug
進行過關檢測:
太棒了!順利進入第二關!
怎麼樣?明白了嗎?後面的 54 關就靠你本身了哦!
在闖關過程當中,儘可能使用 githug hint
,git help subcommand
獲取幫助,也能夠根據下面的兩個教程來系統學習。
猴子都能懂的 git 入門
廖雪峯的 git 教程
爲保你們都能順利通關,學到全部的知識點,接下來我會寫過關攻略,詳細介紹每一關的玩法。
而且我不會直接給答案,而是演示整個過關的過程。
祝你好運!咱們明天見。
「軟件匠藝社區」旨在傳播匠藝精神,經過分享好的「工做方式」和「習慣」以幫助程序員更加快樂高效地編程。