在開始工作後,使用 git 進行版本控制,與同事們進行專案的共同維護是每天都在經歷的事,
漸漸的我也發現有些不常被提出,但工作卻很常用的指令~
- git checkout -b {new branchName}
- git stash / git stash pop / git stash list
- git reset / git revert
- git cherry-pick / git diff / git apply
開新分支 git checkout -b {new branchName}
由於本身在使用 git 進行版控時,都是使用 vscode 內建的 termainal 直接 key-in 指令,
遇到要開發新功能開新分支時,以前可能會倚靠 GUI 的介面進行操作,
但後來了解到能藉由 checkout 來移動目前 版本檢視點(HEAD),在後方加上 -b 代表 branch,
就可以使得 從這 (HEAD) 開出另一條分支,並且也將 HEAD 移動到此分支上,
對於實際開分支省下不少的步驟!!
實用程度:★★★★☆
暫存目前記錄 git stash / git stash pop / git stash list
ㄟㄟㄟ我有個功能很急,幫我看一下是哪裡有問題,想必身為工程師的大家一定很常聽過這句話
尤其是正當你開發功能到一半時,聽到這句話時,必須要先把手上的code先暫存在某地方,
以前可能直覺先用 **git commit -m ‘先暫存’**,將 code 暫存在目前分支上再進行其他分支工作
但 其實可以透過 git stash 就可將 目前 change 檔案都給 暫存 commit 了。
要取回也只需要再輸入 git stash pop ,就可以將目前最新的那筆 stash 給復原。
此外,也支援多筆 git stash,可以透過 git stash list 來瀏覽目前 stash 項目
也可針對要回復的某一筆進行 復原 - 指定stash ID (如:stash@{1} )
指令如下: git stash pop stash@{1}
若發現 list 項目太多沒使用到,也可使用 git shash drop (從最新的開始刪除) / git stash clear (刪除全部項目),但要注意的一但刪除就沒辦法找回來,要使用時需要特別注意!
實用程度:★★★★★
修改commit紀錄 git reset / git revert
在開發時,因著實行將開發顆粒點切小的習慣,增加 commit 次數,
可能會導致 commit 次數太多,使同仁 code review時不方便,
因此我習慣 在 git push 前,使用 git reset HEAD~1 (1代筆往前一筆,往前兩筆則改為2即可), 將目前本地端的 commit 紀錄進行重整,
讓多個 commit 紀錄減少成必要的 commit 紀錄,讓後續維護體驗方便。
但若是已經推上分支後,使用 git reset 可能導致本地與線上版本不一致產生衝突,
因此就需要改用 git revert 進行反轉修改,也就是將原先 commit 內容反轉刪除,
這就能使 code 內容回復至 commit 前,也同時保留住兩筆 commit 紀錄,避免衝突產生。
實用程度:★★★★☆
搬動commit紀錄到不同分支 git cherry-pick / git diff / git apply
在工作專案上,git flow 分成了 dev, sit-release, uat-pre-release 等等
當每次要進行 uat 交付檔案時,因著 sit-release 可能包含這次版本未上功能,
因此不能使用 merge 來合併分支,需要個別確認 各個分支的commit 來去做搬移
若分支commit只有一筆.就很適合使用 git cherry-pick ,可以將指定 commit 紀錄直接搬移至 uat 上,其 commit 文字也會直接被複製過去, 若不需要 可加上 –no-commit 就可以先存在 Staged 上。
但若是分支很多檔案,則可先切換至 sit-release分支上,使用 **git diff {起始commit}
{結束commit}**,將其分支 commit 紀錄產生成差異檔(diff),再切換至 uat 分支,使用 git apply 將其 diff 檔案解析成為 Change檔案,後續就可以再進行commit 到 uat ,即可完成交付檔案的目標。
實用程度:★★★★★
以上就是近期工作的心得,很開心能與大家分享轉職前端工程師這條路的所見,
希望未來還有更多機會可以分享,謝謝。