一、前言
先前有提到,我在轉職後、進到現職公司前,其實還有錄取過另外一份PHP後端工程師之職缺,因為轉職時在培訓營學習過Ruby這個後端語言,所以在技術考時,算是回答方向還可以,有幸被錄取。
不幸的是,我入職後發現全公司都沒有人會使用Git!!!太驚人了啊~這麼好用的東西到底為何不使用呢?我記得我才到職一週時間,每天在辦公室裡,大家都是埋頭寫扣,最常聽到的對話就是「有人剛剛刪掉我的某某某段程式碼嗎?」
後來詢問之後才了解,原來我面試時詢問公司是否有使用Git做版控時,主管說有,其實是沒有的…全公司前後端分離,程式碼的交換是使用共用資料夾做傳輸…所以就會有掉程式碼的問題常發生,而大家也都沒有備份的習慣,導致專案開發常常有耗時之問題!
當然除了沒有版控,其實還有其他問題,我只做一週就離職了。從中得到最寶貴的經驗,我覺得是建議剛要踏入這行的新鮮人,可以多注意版本控制這件事,不要說是協作,你一個人在家開發side project時也可以用啊!隨時隨地都可以練習的~
二、Git是什麼?
Git像一個檔案系統,直接在本機上取得資料,不必連線到主機端取得資料。 每個開發者都可有全部開發歷史的本地副本,changes從這種本地repository複製給其他開發者。這些changes作為新增的開發分支被匯入,可以與本地開發分支合併。(本段落取用自維基百科之定義)
上面那段我覺得可能是因為翻譯關係較為饒舌難懂,我覺得較簡單的理解是可以把Git當作是一個版本開發工具,你可以隨時儲存進度、保留歷史開發內容、為每一階段開發做有效命名、以及傳送至有效之server作為團隊合作之工具。
以下介紹我覺得入職後最常用的幾個,如果想要從頭學習或瞭解一些冷知識的話,推薦可以看龍哥的這本書<<為你自己學 Git>>,可以依自己習慣選擇電子版或實體書籍(我個人還是喜歡實體書籍)。但入職前將下列指令熟用(稍微列幾個,但實際上也要看公司的習慣),真的是很基本的事情!
項次 | Git指令 | 用處 |
---|---|---|
1 | git add . |
我通常都是一個小進度告一段落就會使用,然後搭配項次2的指令作為此進度之命名 |
2 | git commit -m "commit message" |
commit message放的就是你對目前這個儲存的時機點所完成的進度,個人推薦全英文寫上簡單易懂之小句子,可順手培養英文單字熟練度。 |
3 | git merge branch-name |
合併某個分支。 |
4 | git push origin branch-name |
就是推到某個遠端的分支做同步的意思,有可能是feature…、develop等等。 |
5 | git cherry-pick commit-SHA-1 |
- commit-SHA-1是指你想要的那個節點。- 主要是用來處理你忘記開分支出去,就開始撰寫程式碼的狀況。可以參考這個章節,有更詳細之理解。 |
三、Git觀念與習慣
Git好用之處這邊不加以贅述,遠端共同協作更是現在身為工程師必備之技能。那擁有好的Git觀念,我想是要靠自己不斷練習使用、常與團隊溝通合作,自然就能累積而成。這邊介紹一下我個人堅持的小習慣,但我現職的全公司都不愛用XDD我不懂為何…
項次 | 主題 | 內容 |
---|---|---|
1 | 使用全指令介面 | - 好處是可以不用切換輸入法、增加英文字彙量、有很多指令可以活用、假裝很忙? - 壞處目前想不到,因為我覺得學習曲線真的不高。 |
2 | 分支命名 | - 第一當然是尊重團隊習慣。 - 第二則是留意分支主題是否易懂。 |
3 | commit訊息 | - 盡量還是全英文書寫。 - 有需要的話可以進到習慣介面輸入markdown語法詳列。 - 保持習慣一個段落就commit一次,要補救或確認每日進度時很好用。 |
四、Git Server又是什麼?
網路上有點難查到名詞定義,大概意思就是你在本地有的那些分支可以更新(push)到==遠端共同協作的網站==,而你一直在打的那些Git指令是工具。
最知名的Git Server當然就是GitHub啦~聽說工程師宅宅們甚至會在上面交友,以程式碼會友~我個人等級不到還沒體驗過…但是值得一提的是它真的提供了很多服務,像是你的個人首頁看放介紹,你可以創建與你GitHub帳號名稱相同的GitHub Page,大家如果有興趣可以多研究一下~(後面篇幅我也會介紹如何使用GitHub Page)
當然,有的公司也會自架一個Git Server,我現職的公司就是這樣的。入職後,公司會幫我們創建帳號,個人覺得和GitHub幾乎相同,只是那些綠點點不會長在自己的GitHub紀錄裡而已,但我有發現一個奇妙的點,公司自架的 Git Server 綠點點是記錄你的當日 push 次數,而 GitHub 則是記錄你當日 commit 次數,這點倒是不明白為何?
五、結論與自我鼓勵
總結當然首要提到的是,一定要進到一間有版控的公司啊!雖然也有很多公司長年沒有使用仍然可以存活,但我想背後應該有很多沒必要的苦工…次要則是想分享近期我公司同事轉傳給我們的「Git Commit Message寫法」,這是看公司協作和個人習慣,大家可以當作參考即可。
自我鼓勵的部分,當然是覺得佩服自己中秋連假竟然可以成功不斷賽,雖然每天行程很滿,仍然在固定時間點靜下來打文章,因為聽說人類連續21天就能養成一個習慣,我是一個非常容易半途而廢的人(因為有點懶惰),所以需要常給自己鼓勵才有動力!各位鐵人們一起加油吧~