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
2
git clone http://github.com/large-repository --depth 1
git fetch --unshallow

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
    3
    npm install pm2@latest -g
    # or
    yarn global add pm2
  • pm2 启动应用
    pm2 start app.js 即启动,守护和监视应用程序的简单方法

  • pm2 启动其他的应用程序

    1
    2
    3
    4
    5
    6
    pm2 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
    10
    $ pm2 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
  • 配置文件

    • 配置文件里的设置项,跟命令参数基本是一一对应好的

    • 可以选择yamljson 文件

    • 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