一、前言
先前有提到,我在轉職後、進到現職公司前,其實還有錄取過另外一份 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 天就能養成一個習慣,我是一個非常容易半途而廢的人(因為有點懶惰),所以需要常給自己鼓勵才有動力!各位鐵人們一起加油吧~
本文同步發佈於我的個人網站 Annie Code Life
👩🏫 課務小幫手:
✨ 想掌握 Git 觀念和原理嗎?
我們有開設 🔮 坐上 Git 時光機 - 版本控制 課程唷 ❤️️