编程辅助知识总结 | 青训营笔记

114 阅读4分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第3篇笔记

主要想在这篇分享一下,除了常规编程以外,我在青训营学习过程中的一些辅助知识的补充。

Git

Git作为代码管理工具,在平常开发过程中有利于我们进行版本迭代,同时更好地对项目的开发关键节点有所掌握。在日常使用push和pull以外,通过字节青训营的课程,让我对一些指令有所补充和了解。

关于个人的小贴士:

1.在一台新电脑/虚拟机/服务器使用git时,首先需要进行用户配置。

git config --global user.name "yiming"
git config --global user.email 2070436167@email.szu.edu.cn

2.配置相应的密钥

ssh-keygen -t ed25519 -C "2070436167@email.szu.edu.cn"
在~/.ssh/id_ed25519.pub

3.常见操作集合

git init //初始化git仓库git remote add origin_ssh git@XXX
上面的配置
git remote -v //确定是否有远程仓库
git remote add origin_ssh git@XXX
git remote add origin_http https:/XXX

需求:同一个Origin配置不同的Push和Fetch URL
git remote set-url --add --push origin git...

4.HTTP 和 SSH的区别: http的身份认证,ssh是身份认证; 对于go来说,配置免密配置

git add 
git status 
git commit -m "first commit"
git checkout -b test //用于切换分支、版本

Annotation Tag 附注标签: 
git tag -a v0.0.2 -, "add feature 1"

追溯历史版本: 
1.Ref获取当前版本代码 
2.获取历史版本 
git log 查看 
git cat-file

5.rebase 主要是对分支信息进行
1.合并commit 
2.修改具体的commit message 
3.删除某个commit

git gc 可以删除一些不需要的object

git reflog用于记录操作日志,手动将日志设置过期。

【git reflog 是对一些误操作补救的好方法。比如错误的merge,比如错误的处理两个不同的分支产生的错误信息。】

6.假如我们需要向一个开源仓库提pr,需要我们先clone下来,切换dev测试版本。进行pull request,等待审批。

注意:fetch会把代码拉取到本地,但是不会合并当前分支。需要注意一下!!!

项目部署上线

在这里顺便分享一个将项目部署到XX云上的技巧,主要是为需要部署上线的同学准备。

这里以前后端分离的项目为准,首先需要准备工作:

1.前端通过npm run build 打包dist文件和static文件夹
2.后端通过go build得到可执行文件,针对windows同学记得将go env的设置GOARCH="amd64",因为部署的服务器主要以Linux服务器为主
3.如果是选用某云的同学,可以尝试去选择宝塔配置可以实现快速部署。就算没有的话也可以手动安装nginx进行部署,具体流程是在nginx配置文件设置对应目录下的前端dist文件夹、转发的后台端口,并在linux环境下运行可执行的Go文件。这样可以实现将项目部署\

PS:这里提示一个小细节,比如有的同学想更新Go后端文件版本,把Linux上文件删除了,但是服务还是旧服务。这主要的原因是因为,当一个进程在Linux下执行时,即使他的文件已经被删除,但是由于他是以文件描述符的形式存在go的运行目录下,因此还能够正常工作。

PPPS:结论就是,如果有时候我们误删了某个文件,但是该文件之前还在运行的话,可以尝试去恢复该文件。在这里就不详细展开。

后面我再补一个nginx配置代码: 值得注意的是XXX都是你服务器的公网地址

server
{
		listen 8001;
		listen 80;
    server_name XXX.XXX.XXX.XXX;#这里主要是服务器公网地址
    index index.php index.html index.htm default.php default.htm default.html;
    root /www/wwwroot/XXX.XXX.XXX.XXX/dist; #这个是目录下的前端文件夹dist
    
    #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
    #error_page 404/404.html;
    #SSL-END
    
    #ERROR-PAGE-START  错误页配置,可以注释、删除或修改
    #error_page 404 /404.html;
    #error_page 502 /502.html;
    #ERROR-PAGE-END
    
    #PHP-INFO-START  PHP引用配置,可以注释或修改
    include enable-php-56.conf;
    #PHP-INFO-END
    
    #REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
    include /www/server/panel/vhost/rewrite/XXX.XXX.XXX.XXX.conf;
    #REWRITE-END
    
    #禁止访问的文件或目录
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
    {
        return 404;
    }
    
    #一键申请SSL证书验证目录相关设置
    location ~ \.well-known{
        allow all;
    }
    
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
        error_log /dev/null;
        access_log /dev/null;
    }
    
    location ~ .*\.(js|css)?$
    {
        expires      12h;
        error_log /dev/null;
        access_log /dev/null; 
    }
    location /api{
      proxy_set_header Host $http_host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
    rewrite ^/api/(.*)$ /$1 break;
    proxy_pass http://127.0.0.1:8888;
    }
    access_log  /www/wwwlogs/XXX.XXX.XXX.XXX.log; #访问日志
    error_log  /www/wwwlogs/XXX.XXX.XXX.XXX.error.log; #错误日志
}