闖過這 54 關,點亮你的 Git 技能樹 (二)

闖過這 54 關,點亮你的 Git 技能樹 (二)

1

這是一個系列文章,介紹了學習 Git 的好工具 - githug,如果你是第一次看到,請先閱讀:
闖過這 54 關,點亮你的 Git 技能樹
闖過這 54 關,點亮你的 Git 技能樹(一)

今天我將帶大家完成第 11 - 20 關。如對任何命令有疑問請看第一篇裏的推薦教程。

第十一關


在 git 裏,創建一個新文件時,要用 git add 來告訴 git,同樣,刪除一個文件時候,也要告訴 git。

第十二關

有時候執行 add 操作的時候不小心把多餘的文件 add 進去了,這時我們需要把它從 staging area 移除出來,但不能刪除文件。
通過 git help rm,搜索 cached,可以看到有這個參數,剛好能滿足我們的需求。

--cached
    Use this option to unstage and remove paths only from the index. Working tree files, whether modified or
    not, will be left alone.

第十三關

這一關的場景也非常常見,回想一下以前我們用 CVS 或 SVN 的時候。
你寫一個新需求寫的正 High,突然你的主管找到你說有一個用戶打電話來遇到一個問題,非常緊急。
我以前的做法是:把當前改過的文件「複製」一份先放在其它地方,把代碼還原到沒修改的狀態,簽出對應 production 環境的代碼。
定位修復問題,提交代碼,確認問題修復後再合併回開發分支,並把之前備份的代碼複製進來進行合併。

stash 正是解決這個問題的,只需要 git stash,它就把當前未提交的改動「複製」到另一個地方暫存起來,待要恢復的時候執行 git stash pop 即可。

第十四關

這一關有兩種解法,第一種是:

mv oldfile.txt newfile.txt
git rm oldfile.txt
git add newfile.txt

顯然這樣做用戶體驗很糟,Linux 肯定不會這麼設計軟件的。

第二種做法:
git mv oldfile.txt newfile.txt

第十五關

這一關相當於上一關的增強版,可以用通配符一起批量移動文件。

第十六關

有時候我們要看代碼的提交歷史,比如 Code Review 的時候。
不過 git 自帶的 git log 命令比較弱,建議使用 GUI 客戶端或 tig。

第十七關

第十八關

git push 命令默認是不會 push Tags 的,需要加參數。

第十九關

有時候提交之後發現漏掉了某些文件,怎麼辦?
往往很多人就會選擇再單獨提交一次,這樣做其實是不合理的,之前的 commit 就不完整了,有可能上了 CI 就會掛掉。
好的做法是 amend:

命令執行後會調用默認的編輯器編輯 commit message,它會自動帶出之前的 message,如果不需要修改,直接保存退出即可。

第二十關

默認提交的時候記錄的是當前系統時間,但這一關要求覆蓋提交日期。
我想不到有什麼場景需要這麼做,邪惡一點,有可能你把週五的提交,日期寫成周末,這樣表示週末在加班。
純屬YY,千萬不要學,學了也不要告訴別人是我教你的。
git help commit,搜索 date

--date=<date>
    Override the author date used in the commit.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章