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指令也是不错的喔!


<<:  卡夫卡的藏书阁【Book29】- Kafka - MirroMaker 2

>>:  Angular 深入浅出三十天:表单与测试 Day28 - 自订表单元件

Day 28 | 很像 Vue 的 AlpineJS(三): x-model

昨天还少讲了一个最最最常用到的 x-model。如同他的样子,跟 v-model、wire:mode...

[Day25] 测试一定要写好写满?时间有限怎麽办?

既然要写测试,就先来了解前端常见的几种测试类型,从最大家最常听到的单元测试(Unit Testing...

Day 27 - ROS 树莓派光达履带小车实作 (1)

终於进入小车实作啦~~~~上个连假笔者本来就要来写的,结果拖到这个连假才有空来玩车车XD 首先介绍笔...

马可夫模型

马可夫模型 (Markov Model) 会用来表达状态以及转移机率及它们的随机过程使用的模型,或许...

Progressive Web App 定期背景同步 (19)

什麽是 Periodic Background Sync API 透过在 service worke...