git、PM2、Linux指令使用合集
git、PM2、Linux指令使用合集
月晕Git 指令
git 使用基本指令
git init
:初始化项目文件夹,为改项目的根目录下面添加.git 文件git add .
: 将改项目的所有文件添加到暂存区里面(可以方便 merge 和 commit)git commit -m '<commitMessage>'
: commitMessage 是你提交要说明的消息,提交的备注git remote add <remoteName> <远程地址>
: remoteName:为远程仓库取的名称 通常是 origin 本地的 git 文件关联到远程的 Github 仓库git pull
: 拉取远程分支的信息,并可以与本地合并信息git push -f
: 提交到远程仓库,-f 是强制推送git clone
:克隆项目到本地
注意:当我们使用
git clone
若是克隆了很大的库,我们的互联网很慢,很常见的问题就是连接关闭整个克隆取消如同下面的报错Cloning into ‘large-repository’…
remote: Counting objects: 20248, done.
remote: Compressing objects: 100% (10204/10204), done.
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
要想解决这个问题我们可以先 clone 小一点的版本之后在git fetch
即可
1 | git clone http://github.com/large-repository --depth 1 |
git 的远程分支和本地分支
git 管理的创库最大的好处就是多人可以协同开发,这里我们可以分成远程分支(remote)和本地分支(local)git branch -a
可以观察出项目存在的那些分支,一般红色字体表示的是远程分支
本地分支: 本地存在的不同分支版本
远程分支: 项目中存在的不同的版本
创建本地分支:git checkout -b explosion:
创建叫explosion分支
删除本地分支:git branch -d explosion:
删除explosion分支
创建远程分支:git push <remoteName> <localBranch>:<remoteBranch>
提交本地分支到想要的远程分支
删除远程分支:git push <remoteName> –-delete explosion:
删除 explosion
切换分支: git checkout <localBranch>
如何查看分支
git branch
: 查看本地分支git branch -r
: 查看远程分支git branch -a
: 查看所有分支git branch -vv:
查看本地分支和远程分支的关联
将本地分支与远程分支关联起来:git branch --set-upstream-to <remoteName> explosion
将本地分支关联到远程分支
推送分支
git push <remoteName> <local-branch-name>:<remote-branch-name>
推送指定分支到指定远程分支git push <remoteName> <localBranch>
将指定分支推送到同名远程分支git push -u <remoteName> <localBranch>
创建与本地同名远程分支
拉取分支
git pull <remoteName> <remoteBranch>:<localBranch>
拉取远程分支到指定本地分支操作
git 的解决冲突 merge
当我们完成自己写的代码的时候需要提交到主分支上面,有时候就不得不去 merge,merge 是一个技术活,很容易一不小心就把别人写的代码覆盖掉
第一种情况就是你正在主分支上面写东西要提交到主分支上面但是你写之前不知道你的版本是否跟库里面的版本相同,你可以手动 merge
git add .
git commit -m 'xxx'
git pull
输入三个指令之后会在本地生成待合并的文件,可以手动解决完冲突,重新 push 即可
第二种情况就是你提交在你自己写的分支上面然后需要合并到主分支上面下面假设我自己的分支名词叫
yueyun
主分支名词叫master
注意是master
需要合并yueyun
git checkout master
(切换到主分支 master 上面)git merge yueyun
(将现在的 master 分支合并 yueyun)git push origin master
(把本地的分支 master 同步到远程)
注意:此时的 yueyun 和 master 都是本地分支存在的不能直接用远程分支来操控,将本地分支合并完成后在提交到远程分支覆盖既可
git 的指令回退版本
git log
: 控制台输入 git log 可以看到之前的版本信息
git reset -- hard HEAD^
: 回退到上个版本git reset -- hard HEAD~3
: 回退到前 3 次提交之前,以此类推git reset -- hard commit-id
: 回退/进到 指定的 commit 的 id 码commit-id
: 不同的仓库管理会生成不同的 commit-id
git 的一些好用的操作
1.如果发现有人更改过仓库但是没有 merge 而本地的是自己辛辛苦苦写好的那么我们可以直接git push -f
PM2 指令
PM2 是 node 进程管理工具,可以利用其简化很多 node 应用管理的繁琐任务,如性能监控、自动重启、负载均衡等
首先是安装
PM2
(确保你的电脑中有 node 环境)1
2
3npm install pm2@latest -g
# or
yarn global add pm2pm2 启动应用
pm2 start app.js
即启动,守护和监视应用程序的简单方法pm2 启动其他的应用程序
1
2
3
4
5
6pm2 start clash.sh
pm2 start python-app.py --watch
pm2 start binary-file -- --port 1520
pm2 start yarn -n "explosion" -- start
pm2 start ./gocq
# 等等等常用命令的参数说明:
--watch
: 监听应用目录的变化,一旦发生变化,自动重启。如要准确监听深文件,可以自定义配置文件-i --instances
: 启用多少个实例,可以用于负载均衡,如果是-i 0
或者-i max
,则根据当前机器的核数确定实例数目--ignore-watch
:排除监听的目录/文件,可以是特定的文件名,也可以是正则。比如--ignore-watch="test node_modules "some scripts""
-n --name
:应用的名称。查看应用信息的时候可以用到。-o --output <path>
:标准输出日志文件的路径。-e --error <path>
:错误输出日志文件的路径。--interpreter <interpreter>
:the interpreter pm2 should use for executing app (bash, python…)。比如你用的 coffee script 来编写应用。
管理应用程序状态很简单,下面是一些常用的命令
1
2
3
4
5
6
7
8
9
10pm2 restart app_name|app_id
pm2 reload app_name|app_id
pm2 stop app_name|app_id
pm2 delete app_name|app_id
停止所有任务
pm2 stop all
查看进程状态
pm2 ls
查看某个进程信息
pm2 describe 0配置文件
配置文件里的设置项,跟命令参数基本是一一对应好的
可以选择
yaml
和json
文件json
格式的配置文件,pm2 当作普通的 js 文件来处理,所以可以在里面添加注释或者编写代码,这对于动态调整配置很有好处。如果启动的时候指定了配置文件,那么命令行参数会被忽略。(个别参数除外,比如–env)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24{
"name": "fis-receiver", // 应用名称
"script": "./bin/www", // 实际启动脚本
"cwd": "./", // 当前工作路径
"watch": [
// 监控变化的目录,一旦变化,自动重启
"bin",
"routers"
],
"ignore_watch": [
// 从监控目录中排除
"node_modules",
"logs",
"public"
],
"watch_options": {
"followSymlinks": false
},
"error_file": "./logs/app-err.log", // 错误日志路径
"out_file": "./logs/app-out.log", // 普通日志路径
"env": {
"NODE_ENV": "production" // 环境参数,当前指定为生产环境
}
}
Linux 指令
使用的是 Ubuntu22.04 系统
在根目录上/
会存在很多系统的文件 下面是一些常用的目录
文件目录
/usr/bin
:系统命令目录 可执行文件路径 在终端输入命令时,系统会自动到这个目录下寻找命令/usr/lib
:包含系统库的目录 比如 python 下的/usr/lib/python310
这个目录下面就是 包含了 Python 3 的标准库以及一些其他的库模块。Python 标准库包含了许多内置模块和功能,这些模块可以被 Python 程序使用。/etc/python3
:包含了 Python 3 的配置文件 可以影响解释器的行为
包管理
- APT