良好程式碼的優點大同小異。
不好的程式碼的糙點卻各有巧妙之處。
你記得,你上一次看 git log 是為了什麼嗎?
為了解一個不知道什麼時候長出來的 bug ?
為了找出是誰長出了這個 bug ?
這個功能上次是誰寫的?有(「糙」方面的)問題可以問他?
不管是什麼,是為了程式碼帶給你的困惑,所以看 git log。
但是,整個過程似乎在演國家寶藏
當你破解一個線索之後,只會得到了更多的線索
-- 國家寶藏
當你抱著疑惑來看 git log,看到什麼 log 會讓你覺得神清氣爽?
以下的 commit 你看得懂多少?
629d3c6 add price range bar
486b5a5 range slider bar needs to be implemented~~
6c11640 finish header RWD
852ad5b finish contentTop RWD
8aa867f finish contentMid RWD
233e16c finish footer rwd
268e718 do something....
826334e finish footer
56b0e6a finish dynamic tabs and half of contentmid
a31eda5 contentTop version1
67834d8 header version1
d4098ee init html
0310150 init
268e718 do something....
這個是做了什麼?
53c85e0 ver3
45772b7 ver2
1e17624 ver1
3faa384 version3
2e42d5b version2
2ee2ef6 version1
8f828bc version1
7be659e Merge branch (略...)
41c1c78 12/2
3773044 12/1 -3
058b5f3 11/30 -3
5a761bc Merge branch (略...)
fecd73c 11/26 -3
b048697 11/26 -2
4514422 11/25 -2
2aaa057 init commit
871d358 Upload New File
7c0728e Upload New File
efdb8f5 Upload New File
38bb5f0 Upload New File
a0d7546 Upload New File
bad170c Upload New File
236516a Upload New File
d6ac264 Upload New File
587be6b Upload New File
57a9eb4 Upload New File
94d470e Upload New File
2f1e9f7 Upload New File
9df80fc Upload New File
dae1f94 Upload New File
3ff7f1d Upload New File
1fa2ec9 Upload New File
2a1f511 Upload New File
c5774b2 Upload New File
6e0ed48 Upload New File
5d31c8c Upload New File
12f1613 Upload New File
40c8df7 Upload New File
476e3a1 Upload New File
4c8adca Upload New File
afd6c6d Upload New File
38ed6be Upload New File
80d3553 Add new directory
cdc10c5 Delete .gitkeep
51eaf1a Add new directory
de0e795 Upload New File
d5a1d2e Upload New File
f75ebe5 Upload New File
ee89b27 css
68bc1bd Upload New File
2180d67 Upload New File
c9d3801 Delete .gitkeep
80d3553 Add new directory
知道新增一個資料夾,什麼名字?在哪?會怎樣嗎?cdc10c5 Delete .gitkeep
刪除了 .gitkeep ,造成了誰變空資料夾嗎?5092a69 ver1
2172d75 delete
b5cb809 create
111d85e create
4eaaacd .
c1984ed .
9aa08ec clear
7ec4b1c .
4c0401b .
3b62cf6 .
5b1e776 .
4767977 .
f0f9a6b .
e67f7a0 .
89b73c0 .
f3ab39f .
7fa7695 .
cb58ec9 .
d45c6fe .
a5c4812 .
164f7e0 ver1
e8f4585 fix bug
0074496 modify footer RWD
d847776 modify product RWD
bb7d1ac modify space and menu
1158fc8 modify filter RWD
cc5c8d3 modify product detail
9dc2d97 modify footer
4824cd1 modify product detail
5052a50 modify page detail
3a61fb5 add images in html file
905f79d modify HTML struct
a87feb7 add HTML
bc56a8c commit
1c24507 rwd
62c64c6 middle top in rwd
5413dd3 burger menu in rwd
b3ad8e9 need to checkout so commit
c50474c content_bottom
aa4d2a4 footer
51e0658 top content
3f88b3d top fix
d25b815 content middle
ab0f489 middle content
453e7a7 content bottom
d9a18e7 content_bottom some style
2e01422 some fix in content_bottom
8f2ebfc icon in input search
640ce6e background and header
3dccc07 file create
267bff0 read me
寫中文也行
171b7e6 修改星星亮半顆
2213e38 新增.gitignore、修改readme.md、刪除.sass-cache資料夾
1281a11 完成切換分頁
be18e6b 完成#produvt
db53deb 完成shopping-detail
2dd9041 完成星星hover效果
cd1ee77 星星使用SVG
d0877f7 放棄星星
2541a80 放棄星星
202d644 完成product圖
b688981 完成price range & 更新read.me
9f10c80 .brand fixed .kinds finished
fd3c84f .brand finished
f4d6f7c #navigation完成
c6d6021 #header完成
5293648 完成#header的購物車圈圈
a80b61c #header未完成
c2a70ee 完成#contact
d5fef61 .html finish
7a362e5 .html unfinish
01bb5e2 .html unfinish
863b0e8 add readme.md
git 介紹 commit 指令時的描述
Stores the current contents of the index in a new commit along with a log message from the user describing the changes. [1]
重點是「describing the changes」,也就是對你的 git diff 內容進行抽象描述。
還有一個要知道的事「git 上的每一個 commit 都必須要保持可以運作」
另外,《Git 團隊使用手冊》中有提到「git 視為儲存工作成果,而不是記錄過程進展[2]」
最後,再回想一下命名最重要的,就是要「好猜」,從 git log 可以容易猜中你做了什麼
。
甚至有建議使用祈使句,(動詞開頭的句子)做為 git log 的建議文法。
提交的 commit 不是只能寫一行,你知道嗎?使用 git commit
不要使用 git commit -m ""
就知道囉!!
在此只介紹 git commit -m ""
引號內要填寫的內容。欲知詳情,可以看看參考資料
<type>(<scope>): <subject>
<BLANK LINE> 空行
<body>
<BLANK LINE> 空行
<footer>
type
英文 | 意義 |
---|---|
feat (feature) | 新增 |
fix (bug fix) | 修正 |
docs (documentation) | 增加文件 |
style (formatting, missing semi colons, …) | 改變程式碼的排版 |
refactor | 重構 |
test (when adding missing tests) | 增加測試(回報狀況) |
chore (maintain) | 苦功 ( |
subject
就是你的描述
example:
feat: map view for project location
fix: custom field empty in project form
拿 vue.js 的 2.5.16 版來當例子[4]
其實,它每一個版號都需要寫
然後,可以看看它的 112 commits
可以清楚的看到任何一個變更
讓發佈產品時,可以吸引別人使用,也可以讓老客戶看見你修改了什麼舊的問題。
[1] git commit - Git Docs
[2] 《Git 團隊使用手冊》Ch 5 單人團隊, 寫下明確的記錄訊息 p.95
[3] Commit Message Conventions
[4]: vuejs/vue - Github