D7 - 加入版本控制,讓你的專案擁有「多重宇宙」

更新於 發佈於 閱讀時間約 8 分鐘

好了,經過前幾篇的努力,我們的開發環境已經搭建完成,並進行了初步的測試。一切看起來都很順利,但在正式進入開發之前,我們還有一件重要的事情要做:加入版本控制。


你可能會想:「現在還早吧?我一個人開發,有必要嗎?」但相信我,版本控制就像是遊戲中的存檔點,或者電影裡的多重宇宙時間線,在你需要的時候,能讓你回到過去,或者探索不同的開發路線。


一、為什麼需要版本控制?

想像一下,你正在開發一個新功能,結果一不小心把原本運作正常的程式碼改壞了。如果沒有版本控制,你可能得花上好幾個小時,甚至幾天,來找出問題所在。但有了版本控制,只要輕鬆一個指令,就能回到之前的狀態,就像穿越到了平行宇宙,一切問題都不復存在。

個人經驗分享:有一次,我在專案中嘗試一個新框架,結果發現完全不適合。幸好當初有用 Git,把嘗試的部分放在新分支,最後輕鬆切回主分支,省了不少麻煩。

二、Git 就是你的「時間機器」

Git 可以說是開發者的時間機器,讓你在專案的時間線上自由穿梭。每一次的提交(commit),就像是遊戲的存檔點,你可以在任何時候回到這個點。更厲害的是,Git 還支持分支(branch),讓你可以在不同的時間線上探索,互不干擾。

加入版本控制後,你就擁有了「多重宇宙」的力量。錯誤的代碼?沒關係,那只是另一個平行宇宙的悲劇,在這個宇宙裡,我們可以重新開始!

三、開始使用 Git

1. 安裝 Git

首先,確保你的電腦已經安裝了 Git。如果還沒有,請到 Git 官方網站 下載並安裝。各個平台的安裝都非常簡單,這裡就不贅述了。

2. 初始化 Git 儲存庫

在專案的根目錄下,執行以下指令:

git init

這會在你的專案中建立一個 .git 目錄,Git 會在這裡存放所有的版本控制資訊。

3. 設定 .gitignore

我們不希望把一些不必要的檔案納入版本控制,特別是那些會隨系統變動的檔案,例如編譯後的檔案、環境設定檔等。

在專案根目錄下建立 .gitignore 檔案,內容如下:

# Node modules
web/node_modules/
web/.nuxt/
web/.output/

# Laravel vendor
api/vendor/
api/storage/
api/node_modules/

# Environment files
*.env
.env

# Composer lock
api/composer.lock

# Docker volumes
.docker-env/.db_data/

# Log files
*.log

# MacOS
.DS_Store

# IDE files
.idea/
.vscode/

這樣,Git 就會自動忽略這些檔案,不會把它們納入版本控制。

4. 首次提交

現在,我們可以將目前的專案狀態提交到 Git:

git add .
git commit -m "初次提交:建立專案結構與開發環境"

恭喜你,你的專案現在已經有了第一個存檔點!

四、將專案推送到 GitHub

雖然在本機使用 Git 已經不錯,但將專案推送到遠端儲存庫(如 GitHub)會更安全,也方便未來的協作。

1. 註冊 GitHub 帳號

如果你還沒有 GitHub 帳號,請到 GitHub 官方網站註冊一個。GitHub 是目前最流行的代碼託管平台,除了備份相關程式碼外,還有很多強大的功能等著你探索。

2. 建立新的儲存庫{這邊我就列個大概}

登入 GitHub 後,點擊右上角的「+」號,選擇「New repository」,然後:

  • Repository name:輸入你的專案名稱,例如 my-finance-app。
  • Description:簡單描述一下你的專案。
  • Public / Private:選擇儲存庫的可見性。如果你想讓專案公開,選擇 Public;如果只想自己看,選擇 Private。
  • Initialize this repository with a README:不要勾選,因為我們已經在本機有代碼了。
    點擊「Create repository」,GitHub 會為你建立一個新的儲存庫。

3. 連接遠端儲存庫

回到本機終端機,執行以下指令(請將 your-username 和 your-repo 替換為你的 GitHub 用戶名和儲存庫名稱):

git remote add origin https://github.com/your-username/your-repo.git
git branch -M main
git push -u origin main

這樣,你的專案就成功推送到 GitHub 上了!現在,即使你的電腦爆炸(當然希望不會),你的代碼也安全地存在於雲端。

五、日常使用 Git 的技巧

1. 維持良好的提交習慣

每當完成一個功能或修正一個 bug,記得進行提交。提交訊息要清晰明瞭,讓未來的自己一看就懂。例如:

git commit -m "新增財務記錄的 API 功能"

2. 使用分支管理開發

分支就像是多重宇宙的不同時間線,讓你可以在不影響主線的情況下進行開發。當你想嘗試新的功能或實驗時,可以建立一個新分支:

git checkout -b feature/add-authentication

開發完成並測試無誤後,再合併回主分支:

git checkout main
git merge feature/add-authentication

3. 定期推送到遠端儲存庫

別忘了定期將你的提交推送到 GitHub,上傳到雲端既是備份,也是紀錄。

git push

4. 避免將敏感資訊提交到 Git

確保 .env 等包含敏感資訊的檔案被加入 .gitignore,避免不小心洩露 API 金鑰、密碼等重要資訊。

再次提醒:別問我為什麼知道這麼重要,因為我聽說,有人在公開的儲存庫中提交過自己的 AWS 密鑰,結果被亂刷了一大筆費用。那真是教訓啊!

六、Git 進階技巧

1. 回到過去

如果某次提交導致專案無法運作,你可以回到之前的版本:

git checkout <commit-hash>

2. 檢視歷史紀錄

查看所有的提交歷史,了解專案的演進:

git log

3. 撤銷更改

如果修改了檔案但還沒提交,想要撤銷,可以執行:

git checkout -- <file>

七、結語

加入版本控制,就像是給你的專案安裝了一個時光機,讓你能夠自由地在時間線上穿梭,探索各種可能性,而不用擔心犯錯。Git 和 GitHub 不僅僅是工具,更是開發者的好夥伴。

下一步

現在,我們的專案已經有了穩固的基礎和時間機器,接下來就可以正式開始後端 API 的開發了!讓我們繼續這場充滿挑戰和樂趣的冒險吧!

最後的叮嚀:

版本控制可能一開始看起來有點複雜,但相信我,一旦習慣了,你會覺得離不開它。就像你花了 N 個小時調整了代碼格式,只有自己看得出來,但這種內心的滿足感,才是開發的樂趣所在!


加油,我們在下一篇文章中見!


留言
avatar-img
留言分享你的想法!
avatar-img
詹姆士的軟體易開罐
26會員
87內容數
這是一系列以軟體開發為主題的輕鬆分享,內容涵蓋了技術選擇、開發經驗、實戰應用等多方面的議題。無論是如何在眾多框架中做出選擇,還是如何應對技術轉移的挑戰,這裡有幽默、有趣的對話風格,將複雜的技術問題轉化為易懂的故事。
2024/12/22
這是我第一次參加 iThome 鐵人賽,原本並沒有打算參加,但在整理專案時,我忽然想把屬於自己的內容公開分享,而不僅僅藏在雲端裡。於是,我獨自規劃、撰寫並完成了一個完整的開發系列文章。在這段過程中,我體會到獨自開發的挑戰與成就,並希望能將這些經驗分享給每一位正在努力前行的你。
Thumbnail
2024/12/22
這是我第一次參加 iThome 鐵人賽,原本並沒有打算參加,但在整理專案時,我忽然想把屬於自己的內容公開分享,而不僅僅藏在雲端裡。於是,我獨自規劃、撰寫並完成了一個完整的開發系列文章。在這段過程中,我體會到獨自開發的挑戰與成就,並希望能將這些經驗分享給每一位正在努力前行的你。
Thumbnail
2024/12/15
這篇文章介紹建立分類列表頁面以及新增和編輯功能。文中詳細說明瞭頁面結構、資料取得、錯誤處理等重要步驟,並強調了共用元件和資料驗證的一致性。通過這次開發,讀者將獲得關於如何在Nuxt中操作動態路由的深入理解,同時提高使用者體驗。希望本篇能幫助讀者順利完成相關功能建置。
Thumbnail
2024/12/15
這篇文章介紹建立分類列表頁面以及新增和編輯功能。文中詳細說明瞭頁面結構、資料取得、錯誤處理等重要步驟,並強調了共用元件和資料驗證的一致性。通過這次開發,讀者將獲得關於如何在Nuxt中操作動態路由的深入理解,同時提高使用者體驗。希望本篇能幫助讀者順利完成相關功能建置。
Thumbnail
2024/12/14
哈囉,大家好!在前面的文章中,我們已經規劃了前端介面,並盤點了所需的頁面與功能。 現在,是時候開始動手實作了。今天,我們將專注於 銀行帳戶列表頁面(Bank Accounts)以及 新增/編輯銀行帳戶頁面(Add/Edit Bank Account)的開發。 透過這次的實作,我們將學習如何在 N
Thumbnail
2024/12/14
哈囉,大家好!在前面的文章中,我們已經規劃了前端介面,並盤點了所需的頁面與功能。 現在,是時候開始動手實作了。今天,我們將專注於 銀行帳戶列表頁面(Bank Accounts)以及 新增/編輯銀行帳戶頁面(Add/Edit Bank Account)的開發。 透過這次的實作,我們將學習如何在 N
Thumbnail
看更多
你可能也想看
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
重點摘要: 6 月繼續維持基準利率不變,強調維持高利率主因為關稅 點陣圖表現略為鷹派,收斂 2026、2027 年降息預期 SEP 連續 2 季下修 GDP、上修通膨預測值 --- 1.繼續維持利率不變,強調需要維持高利率是因為關稅: 聯準會 (Fed) 召開 6 月利率會議
Thumbnail
重點摘要: 6 月繼續維持基準利率不變,強調維持高利率主因為關稅 點陣圖表現略為鷹派,收斂 2026、2027 年降息預期 SEP 連續 2 季下修 GDP、上修通膨預測值 --- 1.繼續維持利率不變,強調需要維持高利率是因為關稅: 聯準會 (Fed) 召開 6 月利率會議
Thumbnail
軟體開發流程涵蓋需求分析、設計、開發、測試與部署。版本控制(如 Git)幫助管理代碼變更並支持團隊協作。開發中,使用 Git 分支開發新功能,並透過 Pull Request 進行代碼審查。持續集成(CI)與持續部署(CD)自動化測試與部署,提升開發效率和代碼品質,確保高品質交付。
Thumbnail
軟體開發流程涵蓋需求分析、設計、開發、測試與部署。版本控制(如 Git)幫助管理代碼變更並支持團隊協作。開發中,使用 Git 分支開發新功能,並透過 Pull Request 進行代碼審查。持續集成(CI)與持續部署(CD)自動化測試與部署,提升開發效率和代碼品質,確保高品質交付。
Thumbnail
設定目標容易,能持續下去靠的是你替自己設計好的那套系統。
Thumbnail
設定目標容易,能持續下去靠的是你替自己設計好的那套系統。
Thumbnail
好了,經過前幾篇的努力,我們的開發環境已經搭建完成,並進行了初步的測試。一切看起來都很順利,但在正式進入開發之前,我們還有一件重要的事情要做:加入版本控制。 你可能會想:「現在還早吧?我一個人開發,有必要嗎?」但相信我,版本控制就像是遊戲中的存檔點,或者電影裡的多重宇宙時間線,在你需要的時候,
Thumbnail
好了,經過前幾篇的努力,我們的開發環境已經搭建完成,並進行了初步的測試。一切看起來都很順利,但在正式進入開發之前,我們還有一件重要的事情要做:加入版本控制。 你可能會想:「現在還早吧?我一個人開發,有必要嗎?」但相信我,版本控制就像是遊戲中的存檔點,或者電影裡的多重宇宙時間線,在你需要的時候,
Thumbnail
這篇文章將會講述這款遊戲的開發預計與遊戲內系統的清單粗估。
Thumbnail
這篇文章將會講述這款遊戲的開發預計與遊戲內系統的清單粗估。
Thumbnail
漸漸醞釀產生劇情的架構、玩法、以及一些點子 這時期通常也是最有趣,但最容易造成遊戲難產的時候 過去看過很多優秀的點子或是企劃人員 想了很多,最後專案難產 原因就是把架構拉得太大,要求過多 甚至鐵三角(企劃、程式、美術)互相推諉 導致專案直接胎死腹中 其實,不用那麼在意 初期,就是先把核心玩法訂出,接
Thumbnail
漸漸醞釀產生劇情的架構、玩法、以及一些點子 這時期通常也是最有趣,但最容易造成遊戲難產的時候 過去看過很多優秀的點子或是企劃人員 想了很多,最後專案難產 原因就是把架構拉得太大,要求過多 甚至鐵三角(企劃、程式、美術)互相推諉 導致專案直接胎死腹中 其實,不用那麼在意 初期,就是先把核心玩法訂出,接
Thumbnail
2022年底,見了業界內幾位大神,還有幾位傳奇人物 一直想好好搞遊戲,礙於現實面 一直沒有時間跟勇氣執行 於是乎 整理了一些教學小作品後 在play商店先上架 小六壬 猜拳 俄羅斯方塊 也在短時間內,交出一個小DEMO後 想想累積十幾年的能量 也該是從學術,教育者 回歸本心初衷... 這些年來,還
Thumbnail
2022年底,見了業界內幾位大神,還有幾位傳奇人物 一直想好好搞遊戲,礙於現實面 一直沒有時間跟勇氣執行 於是乎 整理了一些教學小作品後 在play商店先上架 小六壬 猜拳 俄羅斯方塊 也在短時間內,交出一個小DEMO後 想想累積十幾年的能量 也該是從學術,教育者 回歸本心初衷... 這些年來,還
Thumbnail
這篇文章將會講述企劃的技術面和知識面,從硬知識到軟知識的介紹。
Thumbnail
這篇文章將會講述企劃的技術面和知識面,從硬知識到軟知識的介紹。
Thumbnail
只要在軟體公司待過,一定對於敏捷式開發不陌生,在現在的年代,是一種頗為主流的開發方式,這種開發方式,有著開發期短、彈性大、持續迭代的特性,但有時候不免會帶來一些技術債、版本管理的問題。 反正只要有了問題,只要快速的修正、並且上新版本去調整即可。 "難道不可以同時進行嗎?" 這樣,真的有比較快嗎?
Thumbnail
只要在軟體公司待過,一定對於敏捷式開發不陌生,在現在的年代,是一種頗為主流的開發方式,這種開發方式,有著開發期短、彈性大、持續迭代的特性,但有時候不免會帶來一些技術債、版本管理的問題。 反正只要有了問題,只要快速的修正、並且上新版本去調整即可。 "難道不可以同時進行嗎?" 這樣,真的有比較快嗎?
Thumbnail
「系統」,具有自我檢視與改進的能力… 這句話,看似很玄! 但,對於已參悟「系統」的人而言...應該會會心一笑! 後記: 1.我在陸工作期間,引導課員去參悟系統~每人,約需花2-3年。 2.與前一個「心情故事」的"自由←自律←自許"是有關連性的!(系統雛形:投入→處理→產出;逆向驗證:投入←處理←產
Thumbnail
「系統」,具有自我檢視與改進的能力… 這句話,看似很玄! 但,對於已參悟「系統」的人而言...應該會會心一笑! 後記: 1.我在陸工作期間,引導課員去參悟系統~每人,約需花2-3年。 2.與前一個「心情故事」的"自由←自律←自許"是有關連性的!(系統雛形:投入→處理→產出;逆向驗證:投入←處理←產
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News