iT邦幫忙

2021 iThome 鐵人賽

DAY 28
0
Modern Web

不只是串串API,新手前端30天系列 第 28

DAY28 - 工程師一定會用到的GIT懶人包

覺得在工程師的職涯中,還有一個一定會遇到的,就是GIT~
如果要以GIT為主題,應該是可以再參加一次鐵人30天了吧XD
不過,因為我們這次的主題就是前端工程師的各種會遇到的疑難雜症集合,
所以今天我們就介紹一些,我覺得我自己覺得在工程師生涯中,
大概是Level1會用到的基礎GIT指令懶人包,這些應該就可以應付大部分不會太難的情況了吧XD

暖暖身 - git add / git commit / git push / git pull

身為一個工程師,這個應該是睡要的時候(?)都可以唸出來的GIT指令吧XD
GIT的檔案狀態會有三種:

  1. 已修改 (在自己的本地端修改過後的檔案,尚未同步至雲端GIT,也未通知GIT有這些檔案要更新)
  2. 已暫存 (在自己本地端修改過後的檔案,通知雲端GIT有這些檔案要更新)
  3. 已提交 (正式將本地端修改的檔案,告訴雲端GIT已同步兩邊的檔案)

git add 檔案名稱/* 將已修改的檔案,加入以暫存的狀態,讓雲端GIT知道有這些檔案需要更新

git commit -m '修改內容備註' 將暫存的檔案加註說明,用來記錄這次改了什麼

git push 將已暫存的檔案更新至雲端GIT變成已提交

好了簡單的暖身結束了,我們來點會用到GIT的各種情境:

狀況1. merge branch

當開發好另外一個branch要merge回去,通常用在新功能的開發branch開發完成後要併回去;或是有需要hotfix的時候在branch修完後要併回其他branch

step1. 切換到目的地branch

git checkout branch名稱 ex. git checkout master

step2. 把要merge的branch併到目的地branch中

git merge 被merge的branch名稱 ex. git merge newFeature


狀況2. 差異檔案打包

當你修改好某個BUG,打包好整包程式之後,這時候客戶方的IT通常會跟你說NONONO不要給我整包程式,給我差異檔就好了~ 差異檔是什麼呢?顧名思義就是跟上次有差異的檔案,意思就是這次才有改動的檔案。那要怎麼樣簡單取得差異檔案呢?來,上指令~~

git archive --format=zip --output=檔案名稱.zip HEAD $(git diff-tree -r --name-only --diff-filter=ACMRT commit新 commit舊)

檔案狀態:

  • A = Added
  • C = Copied
  • M = Modified
  • R = Renamed
  • T = Changed

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當時的檔案狀態複製喔!因此,要特別注意目前本地端端的檔案是不是你要複製的檔案


情境3. 同一包程式,需要上到兩個不同的remote GIT

之前一直不知道會遇到這種情況,直到某次把程式上到別人家環境,對方問說,你們自己沒有備份一份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指令也是不錯的喔!


上一篇
DAY27 - 來加速你的網站!利用Web Worker創造多執行緒的Javascript
下一篇
DAY29 - 做專案的心態
系列文
不只是串串API,新手前端30天30

1 則留言

0
juck30808
iT邦新手 3 級 ‧ 2021-10-14 12:06:38

恭喜即將邁入完賽啦~

我要留言

立即登入留言