版本控制的藝術 : Git 實務篇

更新 發佈閱讀 5 分鐘
系列文的圖片就靠它了

系列文的圖片就靠它了

上一篇《版本控制的藝術:Git 基礎篇》介紹了 Git 的安裝與推送到遠端倉庫的基本操作。雖然這一篇名為「實務篇」,但其實並沒有太複雜的概念,主要是根據我的實務經驗,分享開發者 A 與我本人的協作過程,以及一些需要注意的事項。熟練這些操作後,基本上就能成為一名在 Git 方面合格的工程師了。


我們已經在 GitHub 推送專案,在實務面上,接下來就是要開發新功能與修 bug 啦!為了避免太過混亂,本篇就以兩人協作(假設名為 HankAlan)的方式來做說明,多人以上其實概念都差不多,可能就是比較頻繁的 git pull 和解衝突。

首先模擬一下接到新的需求,假設目前需要解一個 bug 與開發一個新增功能,我們到該專案之下個別建立 issue:

請忽略兩個 assignee 都是同個人 XD

請忽略兩個 assignee 都是同個人 XD

回到 VSCode,我們確認目前位置在主支以及與與遠端倉庫版本一致

# 檢查是否在主支
git status

# 拉取最新主支
git pull origin main

*記得把你的遠端倉庫地址添加到 origin,才不需要每次都複製

出現 Already up to date 就是最新了

出現 Already up to date 就是最新了

接下來 Hank 就必須建立該 issue1 的分支去處理 Bug;Alan 去建立 issue2 的分支去完成 feature

# 新增分支並且切換過去(Hank)
git checkout -b issue1

假設 Hank 已經處理完 bug

# 添加至暫存區
git add .# commit 並且添加訊息
git commit -m "bugfix 已解決格式問題"

# 確認本地是最新, 再來本地端合併主支測試
# git fetch
git pull origin main
git rebase main

# 推送上 GitHub
git push origin issue1

*通常協作團隊都會有自己的 Git Rules,請務必按照團隊格式的要求,不然會被退 PR(我一定會退 XD)

推送完成之後,到 Pull Requests 頁面新增請求,雙人開發的話就是兩人互相 Review,多人的話可能會有一名管理主支的資深工程師,一切都按照團隊 Git Rules 去執行

建立 Pull Request(PR)

建立 Pull Request(PR)

Review 完確認沒問題之後,管理主支的工程師就會把分支合併去主支

合併完成 可喜可賀

合併完成 可喜可賀

接下來說明很常遇到的問題,如果 Hank 修改的 bug 與 Alan 新增功能的程式碼有部分重疊,這個時候很可能推送的時候會發生衝突(conflict),通常都是誰做得慢誰去解衝突XD

# 建立分支的時候大家都是共同的起點, 但是 Alan 做得比較慢, 
# 此時遠端已經是合併issue1後的 main

git add .git commit -m "feat 新增功能"

# 確認本地是最新, 再來本地端合併主支測試
# git fetch (此時會發現有最新的 main, 哭啊!!可能要解衝突了)

git pull origin maingit rebase main

如果出現類似以下畫面

衝突

衝突

恭喜你,你要負責解衝突了。此時會看到需要解衝突的文件會變成紅色,也不用這麼緊張,就是手動確認程式哪部分要留、哪部分要刪

Hank 搞什麼鬼啊!!!

Hank 搞什麼鬼啊!!!

確認完成後把一些冗餘的資料刪除

終於修完衝突了

終於修完衝突了

然後再

git add .

# 繼續 rebase
# 這邊會跳出 vim 編輯, 通常不需要特別改 commit, 直接 :wq 儲存離開
git rebase --continue

# 推送到分支 issue2
git push origin issue2

*有的團隊在解衝突會要求寫下 commit,一切都是依團隊的 rule 行事

後面的建立 PR 程序就跟前面的 issue1 一樣,再來就可以看到 issue1 與 issue2 都合併進去主支啦!Git Graph 可能類似於

合併回主支 main

合併回主支 main

以上就是 8 至 9 成協作的基本流程,當然可能還有其他不同的方式,只是我尚未有相關的經驗。這些內容都是基於我的實際經驗分享,希望對大家有所幫助。下一篇《版本控制的藝術:自建 Git Server — Gogs Web》將會介紹我在封閉網域中自建 Git Server 的過程。如果以上內容有任何說明不當或不清楚的地方,歡迎留言讓我知道,謝謝!

留言
avatar-img
留言分享你的想法!
avatar-img
Alan的沙龍
0會員
12內容數
不定期技術文章、旅遊、人生見解分享
Alan的沙龍的其他內容
2025/08/16
本篇文章介紹 Git 的基礎概念,從專案建立開始,一步步從建立專案並推送到遠端倉庫。掌握 Git 的基礎操作算是軟體工程師必備的能力。後續我們將在下篇文章中,進一步介紹 Git 的分支管理、協作流程及其他進階應用。​
Thumbnail
2025/08/16
本篇文章介紹 Git 的基礎概念,從專案建立開始,一步步從建立專案並推送到遠端倉庫。掌握 Git 的基礎操作算是軟體工程師必備的能力。後續我們將在下篇文章中,進一步介紹 Git 的分支管理、協作流程及其他進階應用。​
Thumbnail
2025/08/09
本篇實現幾種常見的使用模式: 1. Simple 2. Work Queue 3. Publ/Sub 4. Routing 5. Topic
Thumbnail
2025/08/09
本篇實現幾種常見的使用模式: 1. Simple 2. Work Queue 3. Publ/Sub 4. Routing 5. Topic
Thumbnail
2025/08/02
上篇『零基礎入門 RabbitMQ:Producer、Exchange、Queue 和 Consumer 的基本介紹』我們初步認識了 RabbitMQ 的核心部件,本篇我們從安裝到建立 RabbitMQ Server 都會詳細介紹。
Thumbnail
2025/08/02
上篇『零基礎入門 RabbitMQ:Producer、Exchange、Queue 和 Consumer 的基本介紹』我們初步認識了 RabbitMQ 的核心部件,本篇我們從安裝到建立 RabbitMQ Server 都會詳細介紹。
Thumbnail
看更多
你可能也想看
Thumbnail
蝦皮分潤計畫讓我在分享旅遊文章時,也能透過推薦好物累積被動收入,貼補旅行基金。這篇文章,除了介紹計畫的操作亮點與心得,也分享我最常應用的案例:「旅行必備小物 TOP5」,包含行李鎖、免洗內衣褲、分裝瓶、折疊衣架與真空壓縮袋,幫助出國打包更輕鬆。想同時記錄旅行、分享好物又創造額外收入的你,千萬別錯過!
Thumbnail
蝦皮分潤計畫讓我在分享旅遊文章時,也能透過推薦好物累積被動收入,貼補旅行基金。這篇文章,除了介紹計畫的操作亮點與心得,也分享我最常應用的案例:「旅行必備小物 TOP5」,包含行李鎖、免洗內衣褲、分裝瓶、折疊衣架與真空壓縮袋,幫助出國打包更輕鬆。想同時記錄旅行、分享好物又創造額外收入的你,千萬別錯過!
Thumbnail
想增加被動收入?加入蝦皮分潤計畫是輕鬆上手的好方法!本文提供完整教學,包含申請流程、賺取分潤技巧,以及實際使用心得分享,助你輕鬆獲得額外收入。
Thumbnail
想增加被動收入?加入蝦皮分潤計畫是輕鬆上手的好方法!本文提供完整教學,包含申請流程、賺取分潤技巧,以及實際使用心得分享,助你輕鬆獲得額外收入。
Thumbnail
這篇文章將介紹工程師使用版控和git的相關知識和技能,包括版本控制的意義和git的基本指令,以及開發流程和webhook的概念。
Thumbnail
這篇文章將介紹工程師使用版控和git的相關知識和技能,包括版本控制的意義和git的基本指令,以及開發流程和webhook的概念。
Thumbnail
本篇文章介紹如何使用Git Bash進行版本控制操作,包括創建repository、查看狀態、歷程以及加入暫存和提交暫存等操作。透過基本的Git指令,您可以更深入地瞭解Git工具的使用方法。
Thumbnail
本篇文章介紹如何使用Git Bash進行版本控制操作,包括創建repository、查看狀態、歷程以及加入暫存和提交暫存等操作。透過基本的Git指令,您可以更深入地瞭解Git工具的使用方法。
Thumbnail
GitLab為程式碼管理倉庫,且從8.0開始提供CI/CD。 安裝 更新套件索引 sudo apt update 安裝postfix sudo apt install ca-certifi​cates curl openssh-server postfix 切換目錄 cd /t
Thumbnail
GitLab為程式碼管理倉庫,且從8.0開始提供CI/CD。 安裝 更新套件索引 sudo apt update 安裝postfix sudo apt install ca-certifi​cates curl openssh-server postfix 切換目錄 cd /t
Thumbnail
最近在找資料的時候,偶然發現了兩個有趣的 git 指令:git commit --fixup 和 git rebase -i <sha> --autosquash。 研究了下發現對於像我這種每次 commit 都要斤斤計較,盡可能完美的人來說非常好用,因此寫一篇筆記記錄一下用法。
Thumbnail
最近在找資料的時候,偶然發現了兩個有趣的 git 指令:git commit --fixup 和 git rebase -i <sha> --autosquash。 研究了下發現對於像我這種每次 commit 都要斤斤計較,盡可能完美的人來說非常好用,因此寫一篇筆記記錄一下用法。
Thumbnail
本文將介紹Gitlab與GitHub的差異,以及在本地環境部署Gitlab的流程與實作。文章內容包括版本管理系統的選擇,Gitlab的基本功能,以及使用Docker進行部署的詳細步驟。
Thumbnail
本文將介紹Gitlab與GitHub的差異,以及在本地環境部署Gitlab的流程與實作。文章內容包括版本管理系統的選擇,Gitlab的基本功能,以及使用Docker進行部署的詳細步驟。
Thumbnail
GitLab 是一個 DevOps、基於 Web 的免費開源平台 Git 儲存庫,為開發人員提供了所有必要的功能。它是一個用於開發 DevOps 應用程式的一體式平台。 GitLab 允許您執行原始碼管理、監控、安全性和專案規劃任務。 Update system packages: sudo
Thumbnail
GitLab 是一個 DevOps、基於 Web 的免費開源平台 Git 儲存庫,為開發人員提供了所有必要的功能。它是一個用於開發 DevOps 應用程式的一體式平台。 GitLab 允許您執行原始碼管理、監控、安全性和專案規劃任務。 Update system packages: sudo
Thumbnail
前言 上次我們講到 CI/CD 中的 when 使用,今天我們要來傳授一套必殺技,我們要把過去所學的全部融合再一起,相信各位都準備好了,將 Gitlab 從枷鎖中解放出來吧,讓我們來詠唱「武裝完全支配術」 「System Call. Connect Armament. Search Archiv
Thumbnail
前言 上次我們講到 CI/CD 中的 when 使用,今天我們要來傳授一套必殺技,我們要把過去所學的全部融合再一起,相信各位都準備好了,將 Gitlab 從枷鎖中解放出來吧,讓我們來詠唱「武裝完全支配術」 「System Call. Connect Armament. Search Archiv
Thumbnail
上次我們了解 Pipeline 各自在做什麼是,今天來講解 Gitlab CI/CD 工作相依性,來了解 CI/CD 怎麼依據不同階段,進行工作。 上傳四個工作查看 CI/CD 運作 首先我們先定義我們要做的工作,然後上傳到 GitLab,看結果怎麼樣 run-unit-test: bef
Thumbnail
上次我們了解 Pipeline 各自在做什麼是,今天來講解 Gitlab CI/CD 工作相依性,來了解 CI/CD 怎麼依據不同階段,進行工作。 上傳四個工作查看 CI/CD 運作 首先我們先定義我們要做的工作,然後上傳到 GitLab,看結果怎麼樣 run-unit-test: bef
Thumbnail
前言 今天我們要做一個初體驗,讓各位感受一下,在 GitLab CD/CD 的過程,我們今天使用官方提供的 Gitlab,如果您有自架 Gitlab ,也可以使用自架的 Gitlab 練習,我們這邊為了讓各位學習方便,所以使用官方提供的 Gitlab 作為練習,實際寫一個簡單的 CI/CD 腳本,
Thumbnail
前言 今天我們要做一個初體驗,讓各位感受一下,在 GitLab CD/CD 的過程,我們今天使用官方提供的 Gitlab,如果您有自架 Gitlab ,也可以使用自架的 Gitlab 練習,我們這邊為了讓各位學習方便,所以使用官方提供的 Gitlab 作為練習,實際寫一個簡單的 CI/CD 腳本,
Thumbnail
此篇教學 : 使用GitHub架設免費的部落格網站,輕鬆擁有自己的Blog雛型,記錄生活點滴。
Thumbnail
此篇教學 : 使用GitHub架設免費的部落格網站,輕鬆擁有自己的Blog雛型,記錄生活點滴。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News