Git 分支與合併:建立、切換、合併及衝突處理教學

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

繼上一篇簡單介紹 Git 以及用 GitHub 發表網站,我再繼續練習幾個進階的指令,我自己覺得 Branch 跟 Merge 蠻有趣的。

參考學習資源:為你自己學 Git 

🌱 Git 分支(Branch)練習

目標:

  • 建立新的分支
  • 在不同分支進行修改
  • 合併分支

✅ 1️⃣ 建立 Git 專案

📌 如果你還沒有專案,先建立一個新的 Git 儲存庫

mkdir git-branch-practice
cd git-branch-practice
git init # 初始化 Git
echo "print('Hello, Git')" > index.py
git add index.py
git commit -m "Initial commit on main"

✅ 2️⃣ 建立並切換到新分支

Git 預設是在 mastermain 分支,我們來 創建並切換到 feature-branch

git branch feature-branch  # 建立新分支
git switch feature-branch # 切換到新分支
raw-image


📌 你現在在 feature-branch 分支上,這時候來修改 index.py

echo "print('Hello, world')" >> index.py
git add index.py
git commit -m "Update index.py on feature-branch"

✅ 3️⃣ 回到 master 分支,看看變化

git switch main
cat index.txt

📌 你會發現 index.py 仍然顯示:

Hello, Git

這是因為 我們的修改只在 feature-branch,還沒合併到 main


✅ 4️⃣ 合併 feature-branchmaster

現在我們想把 feature-branch 的修改合併到 master

git merge feature-branch
raw-image

📌 成功合併後,查看 index.py

cat index.py

現在應該會顯示:

Hello, Git
Hello, world

🎉 合併成功!


🌋 處理 Merge 衝突

✅ 5️⃣ 製造 Merge 衝突

讓我們手動製造一個 合併衝突(Merge Conflict),以學習如何解決:

  1. master 分支修改 index.txt:(有點懶得寫程式;p 先用txt.文字檔 示範)記得要先 cd 到之前創立的資料夾
  2. git switch master
    echo "Main branch change" >> index.txt
    git add index.txt
    git commit -m "Modify index.txt in master"
檢查出現了新的.txt檔案

檢查出現了新的.txt檔案


  1. 切換回 feature-branch 並修改 index.txt
    git switch feature-branch
    echo "Feature branch change" >> index.txt
    git add index.txt
    git commit -m "Modify index.txt in feature branch"
  2. 回到 master 並嘗試合併
    git switch master
    git merge feature-branch

💥 這時候會產生 Merge 衝突,Git 會顯示:

raw-image
CONFLICT (content): Merge conflict in index.txt
Automatic merge failed; fix conflicts and then commit the result.

✅ 6️⃣ 解決 Merge 衝突

  1. 打開 index.txt,你會看到:
可以用 VS Code 開來看,綠色是原本的程式碼,藍色是想要修正的文字,兩者有衝突不能合併

可以用 VS Code 開來看,綠色是原本的程式碼,藍色是想要修正的文字,兩者有衝突不能合併

  1. Hello from main branch
    <<<<<<< HEAD
    Main branch change
    =======
    Feature branch change
    >>>>>>> feature-branch
  2. 手動修改檔案,解決衝突(合併兩個修改):
可以選擇,要接受哪一個版本或是兩個都接受/拒絕

可以選擇,要接受哪一個版本或是兩個都接受/拒絕

  1. Hello from main branch
    Main branch change
    Feature branch change
  2. 標記衝突已解決,提交變更
    git add index.txt
    git commit -m "Resolve merge conflict between main and feature-branch"

🎉 成功解決 Merge 衝突!

補充說明,如果是兩台不同電腦協作,就需要用git pullgit push 的方式將程式碼傳到 git 共用專案中再下載協作。


📌 總結指令

raw-image



留言0
查看全部
avatar-img
發表第一個留言支持創作者!
這篇文章提供 Git 版本控制系統的完整教學,從基礎概念到進階操作,包含圖文並茂的步驟說明和範例,讓讀者可以快速上手並應用於團隊協作及 GitHub Pages 部署網站。
這篇文章介紹如何使用 Google Colaboratory 進行線性回歸的梯度下降練習,包含手刻梯度下降法和使用 scikit-learn 的方法,並探討學習率、數據標準化、NaN 值等問題與解決方案。另外介紹,Matplotlib 進行結果可視化。
線性回歸是一種預測模型,目標是找到一條最貼近數據點的直線。本文詳細介紹線性回歸的流程,包含收集資料、建立模型、計算誤差、優化模型和測試模型等步驟。重點闡述梯度下降法與損失函數的應用,並解釋學習率的影響、參數更新方式,以及如何透過梯度下降法逐步逼近損失函數的最低點。
本篇筆記介紹非監督式學習的三大類別:分群、關聯分析和降維,並深入說明其概念、演算法和應用場景。包含K-Means分群演算法、Apriori關聯分析演算法、PCA降維技術,以及強化學習的基礎概念。
深入探討監督式學習中的分類預測,涵蓋邏輯回歸、混淆矩陣、模型評估指標 (Accuracy, Precision, Recall, F1 Score)、ROC 曲線、AUC,以及 KNN、SVM 和 Naive Bayes 等分類演算法。還介紹決策樹、Bagging、Boosting 等集成學習方法。
這篇文章提供機器學習和人工智慧的基礎概念,包含監督式學習、非監督式學習、強化學習,以及模型訓練、優化和評估等重要環節。文中也涵蓋了特徵工程、特徵縮放、維度詛咒等關鍵概念,並簡要介紹了正規化、K折交叉驗證等進階技術。
這篇文章提供 Git 版本控制系統的完整教學,從基礎概念到進階操作,包含圖文並茂的步驟說明和範例,讓讀者可以快速上手並應用於團隊協作及 GitHub Pages 部署網站。
這篇文章介紹如何使用 Google Colaboratory 進行線性回歸的梯度下降練習,包含手刻梯度下降法和使用 scikit-learn 的方法,並探討學習率、數據標準化、NaN 值等問題與解決方案。另外介紹,Matplotlib 進行結果可視化。
線性回歸是一種預測模型,目標是找到一條最貼近數據點的直線。本文詳細介紹線性回歸的流程,包含收集資料、建立模型、計算誤差、優化模型和測試模型等步驟。重點闡述梯度下降法與損失函數的應用,並解釋學習率的影響、參數更新方式,以及如何透過梯度下降法逐步逼近損失函數的最低點。
本篇筆記介紹非監督式學習的三大類別:分群、關聯分析和降維,並深入說明其概念、演算法和應用場景。包含K-Means分群演算法、Apriori關聯分析演算法、PCA降維技術,以及強化學習的基礎概念。
深入探討監督式學習中的分類預測,涵蓋邏輯回歸、混淆矩陣、模型評估指標 (Accuracy, Precision, Recall, F1 Score)、ROC 曲線、AUC,以及 KNN、SVM 和 Naive Bayes 等分類演算法。還介紹決策樹、Bagging、Boosting 等集成學習方法。
這篇文章提供機器學習和人工智慧的基礎概念,包含監督式學習、非監督式學習、強化學習,以及模型訓練、優化和評估等重要環節。文中也涵蓋了特徵工程、特徵縮放、維度詛咒等關鍵概念,並簡要介紹了正規化、K折交叉驗證等進階技術。
你可能也想看
Google News 追蹤
提問的內容越是清晰,強者、聰明人越能在短時間內做判斷、給出精準的建議,他們會對你產生「好印象」,認定你是「積極」的人,有機會、好人脈會不自覺地想引薦給你
分支與合併 Branching and Merging[1] 。 這裡提供一個很有趣的說法, 就是理解「分支 Branching」最好的方式, 就是把它理解成「上下文 Context」。
今天學習Git Command-Line Syntax [1] 。 Git command的 convention 為: `git [switches] <command> [<args>]` 而每一個部分的基本解釋是: - `git` 是 Git 命令的開頭 - `[s
Windows : 下載Git (git-scm.com)並按照指示安裝。 安裝完成後,你可以通過運行以下命令來確認安裝是否成功: git --version 初次設定GIT 接下來就是按照初次設定git,會需要配置你的用戶名和電子郵件地址,這些信息將被記錄在您提交的每個變更中。 git
1. Outline Takeaway Setting up Git and verifying installation Configuring your Git username and email Initializing a new Git repository Stagin
Thumbnail
本篇文章介紹如何使用Git Bash進行版本控制操作,包括創建repository、查看狀態、歷程以及加入暫存和提交暫存等操作。透過基本的Git指令,您可以更深入地瞭解Git工具的使用方法。
※ 需要做版本備份時: git init:初始化此資料夾,由git 開始追蹤版本控制。 git add:將檔案加入到暫存區。 git commit:把暫存區的內容提交到儲存庫。 git status:查看目前所有檔案的狀態。 git log:查看過去所有commit的記錄。 ※ 需要做修
※ 簡短說明Git 和 Git Flow 是什麼?如何應用? Git 是什麼? Git是一個分散式版本控制軟體,能夠紀錄檔案的狀態變化,以及協調多個開發者之間的工作。它允許團隊成員協作編輯和管理項目的代碼庫,並且能夠追蹤文件的歷史變更、恢復到以前的版本、合併不同版本的代碼,以及解決代碼衝突等。
Thumbnail
最近在找資料的時候,偶然發現了兩個有趣的 git 指令:git commit --fixup 和 git rebase -i <sha> --autosquash。 研究了下發現對於像我這種每次 commit 都要斤斤計較,盡可能完美的人來說非常好用,因此寫一篇筆記記錄一下用法。
※ 關於Git (二) 請寫下從 Github 上複製一個專案下來,做一次遞交,然後推上去會用到的所有 git 指令。 複製專案(Clone) markdown-here: git clone https://github.com/adam-p/markdown-here.git 如果在訊息
Thumbnail
此篇教學 : 使用GitHub架設免費的部落格網站,輕鬆擁有自己的Blog雛型,記錄生活點滴。
提問的內容越是清晰,強者、聰明人越能在短時間內做判斷、給出精準的建議,他們會對你產生「好印象」,認定你是「積極」的人,有機會、好人脈會不自覺地想引薦給你
分支與合併 Branching and Merging[1] 。 這裡提供一個很有趣的說法, 就是理解「分支 Branching」最好的方式, 就是把它理解成「上下文 Context」。
今天學習Git Command-Line Syntax [1] 。 Git command的 convention 為: `git [switches] <command> [<args>]` 而每一個部分的基本解釋是: - `git` 是 Git 命令的開頭 - `[s
Windows : 下載Git (git-scm.com)並按照指示安裝。 安裝完成後,你可以通過運行以下命令來確認安裝是否成功: git --version 初次設定GIT 接下來就是按照初次設定git,會需要配置你的用戶名和電子郵件地址,這些信息將被記錄在您提交的每個變更中。 git
1. Outline Takeaway Setting up Git and verifying installation Configuring your Git username and email Initializing a new Git repository Stagin
Thumbnail
本篇文章介紹如何使用Git Bash進行版本控制操作,包括創建repository、查看狀態、歷程以及加入暫存和提交暫存等操作。透過基本的Git指令,您可以更深入地瞭解Git工具的使用方法。
※ 需要做版本備份時: git init:初始化此資料夾,由git 開始追蹤版本控制。 git add:將檔案加入到暫存區。 git commit:把暫存區的內容提交到儲存庫。 git status:查看目前所有檔案的狀態。 git log:查看過去所有commit的記錄。 ※ 需要做修
※ 簡短說明Git 和 Git Flow 是什麼?如何應用? Git 是什麼? Git是一個分散式版本控制軟體,能夠紀錄檔案的狀態變化,以及協調多個開發者之間的工作。它允許團隊成員協作編輯和管理項目的代碼庫,並且能夠追蹤文件的歷史變更、恢復到以前的版本、合併不同版本的代碼,以及解決代碼衝突等。
Thumbnail
最近在找資料的時候,偶然發現了兩個有趣的 git 指令:git commit --fixup 和 git rebase -i <sha> --autosquash。 研究了下發現對於像我這種每次 commit 都要斤斤計較,盡可能完美的人來說非常好用,因此寫一篇筆記記錄一下用法。
※ 關於Git (二) 請寫下從 Github 上複製一個專案下來,做一次遞交,然後推上去會用到的所有 git 指令。 複製專案(Clone) markdown-here: git clone https://github.com/adam-p/markdown-here.git 如果在訊息
Thumbnail
此篇教學 : 使用GitHub架設免費的部落格網站,輕鬆擁有自己的Blog雛型,記錄生活點滴。