以前在學前端的時候,基本上是自己做自己的專案,即使到了和同學協作完成作業的那時候,也因為我那一屆很悲悽的只有我一位前端,所以在git的操作上,並沒有協作的經驗。(因為後端和前端各自開一個repo)所以基本上我就只會最基本的clone、pull、push,嚴格來說也都只是會一些很皮毛的用法。直到這陣子,真的必須有很多需要透過git來大量協作的業務後,才發現自己再不好好搞懂真的不行啊!每次遇到都要問一次同事也不是個好現象QQ
因此就誕生了這篇學習筆記!

這次就先從和別人協作時,比較常會遇到的merge和rebase這兩個動作開始。
merge是什麼?
merge這一個詞中文意思是合併,用途也就是把分支內容合併到指定分支。我自己目前在實務上通常會有兩個情境需要merge。
情境一、將新修改的內容合併回主要分支(merge branch into main branch)
有新的修正內容,或新的開發時,會另外開一個分支作業,當在那個分支上作業完成時,就會在把這個分支合併到主要branch上(實務上,可能會是將修正或是新開發功能的分支合併到develop這個branch上)。
情境二、將已經有更新內容的主要分支合併(同步更新)到新修改內容的分支上(merge main branch into branch)
當在分支上進行要做的修正或新開發時,如果已經有其他人將自己手上的分支合併回去主要分支的時候(也就是第一個情境),自己分支的基礎內容(也就是分支上的主要分支內容),就會有一部分和現在最新的主要分支內容不一樣。因為當我們開分支時,複製出去一份的基礎內容是主要分支被更新前的內容,如果「主要的分支上的新改動與自己分支上的改動檔案有重疊,但又要把自己的分支合併回主要分支前 」或「手上的分支的內容,需要主要分支更新的內容時」,都需要做這個動作。
指令用法:
git checkout 要合併進去的分支名
git merge 要合併的分支名

rebase是什麼?
如果查詢rebase這個詞的中文,會查詢到「變基」這個奇怪的詞,不過如果把rebase這個字,拆成兩個字,"re"和"base",就比較好理解是什麼意思了。簡單來說,就是「重新定義基底」、「重新定義基礎」。這個動作我比較少使用,因為主要使用的情境,透過merge也可以辦得到。主要會需要使用的情境如下:
情境一、將分支的基礎內容重新定義成主要分支(rebase branch to main branch)
這個情境跟前面merge的第二個情境的目的一樣,只是達到目的的實際過程不太一樣,這裡我們先理解成目的一樣就可以了。
指令用法:
git checkout 要重新定義基底的分支
git rebase 要當作基底使用的分支

merge和rebase的使用方式
這邊來用幾個比較具體的情境來看一下怎麼使用merge和rebase。
merge的情境
情境一、在分支中新增一個style檔案進行style調整完成後,將這個分支合併回主要branch
合併前的圖表
image
步驟:
(1) 切換到要合併進去的分支 git checkout main 
(2) 輸入merge指令 git merge phoebe/feat/style
文章標籤

文科少女寫程式 發表在 痞客邦 留言(0) 人氣(235)