1 - 由于每次開發(fā)時芯急,都需要更改相關文件(項目的特殊性谬以,env文件和debugger工具特殊使用方式斗锭,以及有些功能在模擬器中無法正常運行雹有,只能代碼跳過)偿渡,為了不用每次頻繁更改
我把一次更改好的內容建立了一個分支叫做 microl/editFilesForDev 并且提交了 commit,
commit id 為:06c4ee71f102308f4ced9476766c2dea22d628ba
以后每次開發(fā)新任務時霸奕,只需要先把這條commit 通過cherry-pick指令摘取到新分支上便可直接進行開發(fā)了溜宽,不用重復修改那些文件了
實際案例:
比如,我現(xiàn)在處在一個叫做AAA-SSS的項目上质帅,并接到一個new task适揉,該task在 DevOps 上建立的 ticket 為 【453234 — [AAA] xxx UI need to change】
那么我在平時開發(fā)過程中會涉及到的git操作一般有:
(1)切換到主分支 git checkout master ,然后拉取最新代碼 git pull
(2)base 主分支(最新)來創(chuàng)建并切換一個新分支:git checkout -b fix/AAA-SSS-453234;注意-我現(xiàn)在已經(jīng)切換到新分支上了,然后就能把提前準備好的開發(fā)文件commit cherry-pick 過來了:git cherry-pick 06c4ee71f102308f4ced9476766c2dea22d628ba煤惩;這個commit id就是上面提到的那條,(然后記得要reset到該分支的前一條最新commit嫉嘀,確保這條開發(fā)臨時更改的commit是處于未提交的狀態(tài))
(3)開發(fā)之前要記錄下當前最新的一條commit id,比如記錄下這條commit id — 72a2dba4af7d1005f211cf1381652ec66d5968a4
(4)因為修改代碼過程中魄揉,我很可能為了記錄自己的修改記錄剪侮,頻繁提交很多commit,但是這在提交PR的時候是不被允許的洛退,如此一來我在最后提交PR的時候就能通過 reset 指令回到最出記錄好的 commit 上:git reset 72a2dba4af7d1005f211cf1381652ec66d5968a4瓣俯,然后重新提交一份完整的新的 commit: [1] - git add . => [2] - git commit -m “fix: 453234 — [AAA] xxx UI need to change”;
(5)這是就會把之前我頻繁提交了好多條的commit記錄都給覆蓋掉了,現(xiàn)在就只會只有一條剛提交的最新的commit了
(6)強制推送到遠程分支上:git push origin fix/AAA-SSS-453234 —force; 因為之前開發(fā)的時候兵怯,我很可能我已經(jīng)把commit記錄都推送到遠程分支上了降铸,因為本地保存不一定可靠(萬一電腦出問題了),那么此時本地分支和遠程分支的commit就會不一致有沖突摇零,所以我需要使用 —force 指令來把本地分支的強制推送到遠程分支上
(7)這樣一來最后提交的PR就只會看到只有一條commit了推掸,review代碼的人就不會說什么了