Git: 如何從遠端拉取連結建立本地端尚未存在的branch以及如何合併特定檔案至指定branch
Dec 23, 2021
情境
遠端branches:
master, develop, feature-a
本地端branches:
develop, feature-a
當初pull專案到本地端後,整理branch時不小心把master砍掉,後面開發時都是在遠端做feature合併到develop再合併到master,因此也就一直放著沒處理,然而今天遇到一個情況是,feature-a有5個新commits,也已經合併到develop,但暫時還不想全部合併到master,只想合併commit中的一個檔案到master。
作法
一、拉取遠端master至本地端
因為需要與遠端同步,所以並不能直接在本地端執行:
git checkout master
這樣做會直接同步你本地端的某一分支(看你切換在哪)的程式碼,而我們目前是希望建立一個與遠端master同步的branch:
git checkout -b master origin/master
倘若出現類似的error msg:
fatal: 'origin/master' is not a commit and a branch 'master' cannot be created from it
可以嘗試執行:
git fetch --all
這邊如果出現https驗證輸入帳密但又驗證失敗的話,請改ssh key驗證並且:
git remote set-url origin {your repository SSH URL}
如果驗證成功但是建立branch還是失敗,可嘗試:
git remote set-branches --add 'origin' 'master'
然後:
git fetch 'origin'
再執行:
git checkout --track 'origin/master'
成功訊息:
Switched to a new branch 'master'
Branch 'master' set up to track remote branch 'master' from 'origin'.
可用 git log確認一下同步狀況。
二、合併develop的特定檔案至master
因為這些commit都有牽扯到其他檔案的修改,所以並不考慮cherry-pick。
1.切換到你想要合併的目標分支 (master):
git checkout master
2.選擇特定檔案 (testfile1.php)和特定分支 (develop):
git checkout develop testfile1.php
3.確認狀態:
git status
4.沒問題即可commit:
git commit -m "{ your commit message }"