覺得在工程師的職涯中,還有一個一定會遇到的,就是GIT~
如果要以GIT為主題,應該是可以再參加一次鐵人30天了吧XD
不過,因為我們這次的主題就是前端工程師的各種會遇到的疑難雜症集合,
所以今天我們就介紹一些,我覺得我自己覺得在工程師生涯中,
大概是Level1會用到的基礎GIT指令懶人包,這些應該就可以應付大部分不會太難的情況了吧XD
身為一個工程師,這個應該是睡要的時候(?)都可以唸出來的GIT指令吧XD
GIT的檔案狀態會有三種:
git add 檔案名稱/*
將已修改的檔案,加入以暫存的狀態,讓雲端GIT知道有這些檔案需要更新
git commit -m '修改內容備註'
將暫存的檔案加註說明,用來記錄這次改了什麼
git push
將已暫存的檔案更新至雲端GIT變成已提交
好了簡單的暖身結束了,我們來點會用到GIT的各種情境:
當開發好另外一個branch要merge回去,通常用在新功能的開發branch開發完成後要併回去;或是有需要hotfix的時候在branch修完後要併回其他branch
git checkout branch名稱
ex. git checkout master
git merge 被merge的branch名稱
ex. git merge newFeature
當你修改好某個BUG,打包好整包程式之後,這時候客戶方的IT通常會跟你說NONONO不要給我整包程式,給我差異檔就好了~ 差異檔是什麼呢?顧名思義就是跟上次有差異的檔案,意思就是這次才有改動的檔案。那要怎麼樣簡單取得差異檔案呢?來,上指令~~
git archive --format=zip --output=檔案名稱.zip HEAD $(git diff-tree -r --name-only --diff-filter=ACMRT commit新 commit舊)
檔案狀態:
git archive --format zip -o 檔案名稱.zip HEAD
打包最新整包程式為檔案名稱.zip
git diff-tree --no-commit-id --name-only -r commit新 commit舊
看新舊commit之間的差異檔案有哪些
git diff-tree -r commit新 commit舊 (顯示commit)
git diff-tree --name-only -r commit新 commit舊 (只顯示名稱)
因此組合起來 打包 + 差異檔案 如下
commit舊 到 commit新 之間的差異檔案git archive --format=zip --output=檔案名稱.zip HEAD $(git diff-tree -r --name-only --diff-filter=ACMRT commit新 commit舊)
最新的和上一次commit的差異檔案git archive --format=zip --output=檔案名稱.zip HEAD $(git diff-tree -r --name-only --diff-filter=ACMRT HEAD)
注意!!!!!!!
git-diff 這個差異檔案,會從目前本地端的檔案複製到打包的檔案中,不是從commit當時的檔案狀態複製喔!因此,要特別注意目前本地端端的檔案是不是你要複製的檔案
之前一直不知道會遇到這種情況,直到某次把程式上到別人家環境,對方問說,你們自己沒有備份一份GIT嗎?想想才覺得的確也該自己的環境也放一包code才對,難保人家的環境都不會出事。因此,就有了同一包code要上到兩邊remote的狀況。
git remote -v
看remote的git有哪些
git remote add remote名稱
需要新增remote
之後就可以選擇要在哪一個remote更新程式
ex. git push origin master -> 更新遠端origin的master branch
ex. git push dev master -> 更新遠端dev的master branch
GIT真的是一個在撰寫程式和大家寫程式時,一定都會用到的技能,
很多基本的方法,如果知道的話,真的可以在協作上或程式控管上讓你感受到很大的便利性,今天講的只是很少很少的部分,是我自己算是蠻常用到的三種情境,和大家分享
很多人也會用source tree、小烏龜都是很方便的git工具。不過我自己也蠻喜歡直接用vscode內建的GIT功能搭配指令,直接在開發時在terminal打指令就可以做完所有事,覺得也是蠻方便的,雖然已經有很多工具可以輔助使用,不過多少還是可以認識一下GIT指令也是不錯的喔!