本篇内容主要是根据实际项目中的经验积累与总结,归纳在当前的前端工作场景中高频使用的git cli及linux cli,便于加深记忆与熟练使用。
一、Git
梳理git操作中容易混淆和被忽视的几个概念:
- untracked flies
git系统中的文件具有生命周期,新添加到git仓库中的本地文件会被系统默认为未被追踪的文件。
删除无用的untracked files文件:
-
- git clean [-xndf]
2. git stash
- git stash list
- git stash pop [stash@{idx}]
- git stash drop [stash@{idx}]
- git stash clear
3. git reset
- 工作区、暂存区、版本库的关联性
-
- reset [--soft|--hard|--mixed]
-
-
- git reset --soft HEAD^
回滚到上一个提交,同时保留暂存区和工作目录的内容。 - git reset [--mixed] HEAD^
回滚到上一个提交,同时清空暂存区并保留工作目录的内容。 - git reset --hard HEAD^
回滚到上一个提交,同时清空暂存区和工作目录的所有改动。
- git reset --soft HEAD^
-
例:
当前working directory区状态(状态1):
当前stage区状态(状态2):
commit后,head区状态(状态3):
此时 HEAD^ 为当前commit:
那么,--soft 模式将由状态3回到状态2:
--mixed 模式将由状态3回到状态1,对应的HEAD也将由HEAD^变为HEAD^^。
如果在执行一次 git reset --soft HEAD^ 之后在执行一次 git reset --soft HEAD^,则将回滚到 HEAD^^的提交状态,此时工作目录中的代码改动可能已经不是你自己所做的改动了。
这种情况下通过 git reset --hard HEAD^ 可以撤销当前工作目录和暂存区的改动,恢复异常状态,重新pull。
二、Linux
以linux系统作为前端开发环境也是可选的工具技术栈。在linux开发环境下项目代码将部署在远程服务器上,开发人员可以直接读写远程服务器上的项目代码,执行同步、修改、部署(打包)等系列操作。面向前端的linux常用cli并不多,根据开发过程中遇到的实际场景,整理归纳了部分命令行的使用注意点。
- 远程登录
- ssh
linux系统下通过ssh服务实现对远程服务器的连接。ssh服务会把系统访问过的每一台计算机的公钥(public_key)记录下来(~/.ssh/known_hosts),以便再次访问该主机时进行核验,如publick_key不同,ssh服务会发出警告(出于安全性考虑)。
2. 文件/磁盘管理
-
- 基本操作
- mkdir
- touch
- rm -rf /*
2. 压缩备份 - tar [-cxzvf]
- -c # 建立压缩文件
- -x # 还原文件
- -z # 通过gzip指令处理压缩文件
- -v # 显示解压缩执行过程
- -f # 指定备份文件
常用于对打包文件进行解压还原,或将日志文件进行打包输出。
3. 文件查找
- find
1. 服务器端经常遇到磁盘被占满的情况,通常情况下由大的日志文件造成。
查找大文件并删除:
2. 模糊查询:
-
-
- grep [-r]
查找文件中符合条件的字符串。
如查找打包文件源代码中是否包含关键字(以排查代码提交是否正常): - whereis [-bm]
查找二进制文件(应用程序)。
如查找yum指令安装位置(及软连接、man帮助手册):
- grep [-r]
-
-
-
- locate # 查找文档(在/lib数据库中查找)
-
4. 文件权限
- chmod [options] mode files
文件的9种属性:
[ d | r w x | r - x | r - x ]
[ 文件类型 | 读 写 执行 | 读 写 执行 | 读 写 执行 ]
[ | 4 2 1 | 4 2 1 | 4 2 1 ]
[ | u(用户) | g(组) | o(其他) ]
参数:mode: [ugoa][=+-][rwxX],其中r/w/x权限分别通过数值4/2/1表示,因此权限又可以通过数值运算的值来表示。
所以,可使用参数操作符修改文件权限。
1. chmod 777 filename # => [drwxrwxrwx]
2. chmod 445 filename # => [dr--r--r-x]
3. chmod u=rw,g-w,o+wx # => [drw-r--rwx]
4. chmod a-x filename # => [drw-rw-rw-]
5. 文件拷贝
- scp [-r]
linux系统下跨服务器文件拷贝,参数-r可递归遍历文件夹里面的内容。
1. 从远程服务器拷贝文件夹(文件)到本地主机
2. 将本地主机文件夹(文件)拷贝到远程服务器
-
-
- rcp [-r]
-
6. 组合指令
- ls -a;pwd
- mkdir tempfile && cd tempfile
7. 定向输出
- find . -name *xplo*.js > mylog
3. 网络系统
-
- ping [-c] <address> # 测试本机与目标主机的连通性、稳定性
其中:
1: ping目标主机域名(IP)
2: 包文件大小
3: ping序列(参数-c指定)
4: 包文件收发数、丢包率
5: 最小/平均/最大响应时间
丢包率偏高连接不稳定的情况:
-
- ifconfig # 网络配置
可通过参数配置,或编辑网络配置文件 /etc/sysconfig/network-script/ifcfg-ens0 修改。
- ifconfig # 网络配置
网络配置修改后,需要执行 service network restart 重启生效。
-
- systemctl status <servicename> # 查看服务运行状态
以192.168.80.233节点danastudio服务为例:
- systemctl status <servicename> # 查看服务运行状态
-
- systemctl restart network # 重启服务
4. 创建别名
- alias
使用 alias <shortname>=<command name> 定义一次性别名,仅供当前会话窗口使用。
linux下编辑 ~/.bashrc (macOS下 ~/.bash_profile)保存别名设置,永久生效。
参考文章
- 让你牛B加身的前端必会Linux命令 - 奇舞周刊