From c850bd82fa8e0007b416c0d4b20d9f5122e103fd Mon Sep 17 00:00:00 2001 From: lihaibineric Date: Wed, 6 Dec 2023 22:32:34 +0800 Subject: [PATCH] Site updated: 2023-12-06 22:32:34 --- 2023/10/23/git/index.html | 23 +- 2023/11/25/linux/index.html | 6 +- index.html | 6 +- local-search.xml | 6 +- search.xml | 801 ++++++++++++++++++------------------ 5 files changed, 430 insertions(+), 412 deletions(-) diff --git a/2023/10/23/git/index.html b/2023/10/23/git/index.html index c54c554..4c12f4b 100644 --- a/2023/10/23/git/index.html +++ b/2023/10/23/git/index.html @@ -16,15 +16,15 @@ - + - + - + @@ -208,7 +208,7 @@ - 2.2k words + 2.5k words @@ -219,7 +219,7 @@ - 19 mins + 21 mins @@ -271,8 +271,17 @@

【基础工具】Git命令集

Git的安装与配置

+

安装Git

+

直接上官网下载安装

+

https://link.zhihu.com/?target=https%3A//git-scm.com/download

+

https://git-scm.com/

+

或者MAC使用brew对git进行安装

+
1
brew install git

查看Git中的配置

-
1
git config --list
+
1
2
3
git config --list
git config --global user.email test@163.com
git config --global user.name test
+

检查是否安装成功

+
1
git version

Git的基本控制

初始化Git仓库

当完成上述的配置之后,就能开始初始化Git仓库,进入需要创建工作区workspace的文件夹输出git初始化的操作

@@ -309,7 +318,7 @@

初始化Git仓库

完成连接之后再配置git的相关内容

-
1
2
3
git config --global user.email test@163.com
git config --global user.name test

+
1
2
git config --global user.email test@163.com
git config --global user.name test
  • 本地工作区的设置

    首先进行初始化设置,使当前文件夹能够使用git

    1
    git init
    diff --git a/2023/11/25/linux/index.html b/2023/11/25/linux/index.html index 73cecfc..e22e7c2 100644 --- a/2023/11/25/linux/index.html +++ b/2023/11/25/linux/index.html @@ -26,8 +26,8 @@ - + @@ -630,10 +630,10 @@

    GPU运行指定

    diff --git a/index.html b/index.html index 07d9723..d59c62f 100644 --- a/index.html +++ b/index.html @@ -318,10 +318,10 @@

    @@ -407,7 +407,7 @@

    - Git 是一个版本控制系统,是任何软件开发项目中的主要内容。通常有两个主要用途:代码备份和代码版本控制。使用Git可以逐步处理代码,在需要回滚到备份副本的过程中保存每一步的进度。 Git与GitHub Git的安装与配置 查看Git中的配置 1git config --list Git的基本控制 初始化Git仓库 当完成上述的配置之后,就能开始初始化Git仓库,进入需要创建工作区works + Git 是一个版本控制系统,是任何软件开发项目中的主要内容。通常有两个主要用途:代码备份和代码版本控制。使用Git可以逐步处理代码,在需要回滚到备份副本的过程中保存每一步的进度。 Git与GitHub Git的安装与配置 安装Git 直接上官网下载安装 https://link.zhihu.com/?target=https%3A//git-scm.com/download https:/
    diff --git a/local-search.xml b/local-search.xml index 15b5186..0daa4fa 100644 --- a/local-search.xml +++ b/local-search.xml @@ -45,10 +45,10 @@ - 后端开发 - 基础工具 + 后端开发 + @@ -89,7 +89,7 @@ /2023/10/23/git/ -

    Git是一个版本控制系统,是任何软件开发项目中的主要内容。通常有两个主要用途:代码备份和代码版本控制。使用Git可以逐步处理代码,在需要回滚到备份副本的过程中保存每一步的进度。

    Git的安装与配置

    查看Git中的配置

    1
    git config --list

    Git的基本控制

    初始化Git仓库

    当完成上述的配置之后,就能开始初始化Git仓库,进入需要创建工作区workspace的文件夹输出git初始化的操作

    1
    2
    cd workspace
    git init

    创建一个名为 .git的新子目录(该目录为隐藏的),其中包含所有必需的存储库文件(Git存储库框架);注意区分工作区暂存区,在没有add之前我们都是在工作区

    【Vscode】考虑Gitgraph插件来可视化git分支目录的全貌

    • 在Github端新建仓库

      根据需要可以设置为公有的或者是私有的,最好不要设置README.md,因为初始化的国过程可能会出现冲突,设置也没关系

    • 本地的Git和远端github的连接

    获取本地的SSH公钥匙,打开终端并输入

    1
    ssh-keygen -t rsa -C "youremail@example.com"

    进入.ssh中复制id_rsa.pub中的内容,并在Github中的如下位置复制改内容添加SSH🔗

    完成连接之后再配置git的相关内容

    1
    2
    3
    git config --global user.email test@163.com
    git config --global user.name test

  • 本地工作区的设置

    首先进行初始化设置,使当前文件夹能够使用git

    1
    git init

    如果一开始没有设置README.md文件那么执行

    1
    2
    3
    4
    5
    git add README.md
    git commit -m "first commit"
    git branch -M master
    git remote add origin git@github.com.....git
    git push -u origin master

    以上这些步骤,就能将本地的git和远端的仓库进行关联

  • 本地和远端关联失败

    当然会出现本地和远端关联失败的情况,产生的原因可能如下:

    1. 在默认情况下,git push时一般会上传到origin下的master分支上,当repositorybranch过多,又没有设置关联时,git就会产生疑问

      通过以下命令查看远端本地的分支,并选择合适的

      1
      2
      git branch //本地
      git branch -a //远端
    2. 如果本地初始化的内容和远端的内容不一样,那么无法判断本地和远端的内容差异,因此需要选择如下之一

    1
    git reset --hard origin/master

    直接将远端的内容覆盖到本地

    1
    git push -f -u origin master

    强行将本地的内容覆盖到远端,那么就能形成统一,从而完成链接。

  • 添加文件和备注

    1
    2
    git add . 
    git add <file>

    执行上述命令之后将会将当前的file或者是工作区中的所有文件都上传到暂存区

    1
    2
    3
    git commit -m"【test】XXX更改信息提示"
    #如果多次提交想覆盖到同一个提交的备注上执行下面
    git commit --amend

    上述的命令是将本次的提交添加描述,分布式协作的时候能看清

    状态与日志

    查看默认配置

    1
    git config --list

    查看当前所在的分支位置信息

    1
    git status

    查看当前分支下的更改日志

    1
    git log

    推送与拉取

    将本地暂存区中的更改内容推送到远端

    1
    2
    git push
    git push -f #强行推出

    将远端所在的分支内容拉到本地

    1
    git pull

    更新所在分支的最新内容

    1
    git fetch --all 

    复制分支

    获取git连接git@ XXX.git之后执行:

    1
    git clone git@ XXX.git

    如果觉得git的内容太大,可以选择内部的分支进行下载

    1
    git clone -b feature/xxx git@ XXX.git

    feature/xxx为具体的分支内容

    分支操作

    查看分支

    1
    2
    git branch -a #查看所有的分支
    git branch -r #查看远端的分支

    切换不同的分支

    1
    git checkout [branch] #切换到分支

    创建新的分支

    1
    git branch [branch] #创建新的分支

    创建新的分支并切换到上面

    1
    git checkout -b [branch] #创建并切换新的分支

    分支冲突

    问题描述:如果当前修改的版本基于旧版,但是远端已经是新版origin/master,此时修改基于的内容和远端不同不能强行推

    解决方法1:通过换基的方法解决,通过将当前的修改的旧版换到最新的基上

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #先将文件提交到暂存区
    git add . #保存在暂存区
    git commit -m "XXX"
    #进行换基操作
    git rebase -i origin/master
    #再次提交
    git add .
    #继续换基
    git rebase --continue
    #换基成功后,只需要一次备注(覆盖)
    git commit --amend
    #最后退出
    git push
    git push -f #或者强行推出

    解决方法2: 暴力覆盖

    1
    2
    3
    4
    5
    git fetch --all #获取远端的全部内容
    git reset --hard origin/master #强行将远端的内容覆盖到本地的文件中
    git commit --amend
    git push -f #强行推出

    ]]> +

    Git是一个版本控制系统,是任何软件开发项目中的主要内容。通常有两个主要用途:代码备份和代码版本控制。使用Git可以逐步处理代码,在需要回滚到备份副本的过程中保存每一步的进度。

    Git的安装与配置

    安装Git

    直接上官网下载安装

    https://link.zhihu.com/?target=https%3A//git-scm.com/download

    https://git-scm.com/

    或者MAC使用brew对git进行安装

    1
    brew install git

    查看Git中的配置

    1
    2
    3
    git config --list
    git config --global user.email test@163.com
    git config --global user.name test

    检查是否安装成功

    1
    git version

    Git的基本控制

    初始化Git仓库

    当完成上述的配置之后,就能开始初始化Git仓库,进入需要创建工作区workspace的文件夹输出git初始化的操作

    1
    2
    cd workspace
    git init

    创建一个名为 .git的新子目录(该目录为隐藏的),其中包含所有必需的存储库文件(Git存储库框架);注意区分工作区暂存区,在没有add之前我们都是在工作区

    【Vscode】考虑Gitgraph插件来可视化git分支目录的全貌

    添加文件和备注

    1
    2
    git add . 
    git add <file>

    执行上述命令之后将会将当前的file或者是工作区中的所有文件都上传到暂存区

    1
    2
    3
    git commit -m"【test】XXX更改信息提示"
    #如果多次提交想覆盖到同一个提交的备注上执行下面
    git commit --amend

    上述的命令是将本次的提交添加描述,分布式协作的时候能看清

    状态与日志

    查看默认配置

    1
    git config --list

    查看当前所在的分支位置信息

    1
    git status

    查看当前分支下的更改日志

    1
    git log

    推送与拉取

    将本地暂存区中的更改内容推送到远端

    1
    2
    git push
    git push -f #强行推出

    将远端所在的分支内容拉到本地

    1
    git pull

    更新所在分支的最新内容

    1
    git fetch --all 

    复制分支

    获取git连接git@ XXX.git之后执行:

    1
    git clone git@ XXX.git

    如果觉得git的内容太大,可以选择内部的分支进行下载

    1
    git clone -b feature/xxx git@ XXX.git

    feature/xxx为具体的分支内容

    分支操作

    查看分支

    1
    2
    git branch -a #查看所有的分支
    git branch -r #查看远端的分支

    切换不同的分支

    1
    git checkout [branch] #切换到分支

    创建新的分支

    1
    git branch [branch] #创建新的分支

    创建新的分支并切换到上面

    1
    git checkout -b [branch] #创建并切换新的分支

    分支冲突

    问题描述:如果当前修改的版本基于旧版,但是远端已经是新版origin/master,此时修改基于的内容和远端不同不能强行推

    解决方法1:通过换基的方法解决,通过将当前的修改的旧版换到最新的基上

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #先将文件提交到暂存区
    git add . #保存在暂存区
    git commit -m "XXX"
    #进行换基操作
    git rebase -i origin/master
    #再次提交
    git add .
    #继续换基
    git rebase --continue
    #换基成功后,只需要一次备注(覆盖)
    git commit --amend
    #最后退出
    git push
    git push -f #或者强行推出

    解决方法2: 暴力覆盖

    1
    2
    3
    4
    5
    git fetch --all #获取远端的全部内容
    git reset --hard origin/master #强行将远端的内容覆盖到本地的文件中
    git commit --amend
    git push -f #强行推出

    ]]>
    diff --git a/search.xml b/search.xml index 6b7ad40..89e27ac 100644 --- a/search.xml +++ b/search.xml @@ -282,134 +282,82 @@ alt="GRF的训练结果与可视化" /> - 【基础工具】Git命令集 - /2023/10/23/git/ + 【基础工具】Anaconda命令集 + /2023/10/22/conda_list/ -

    Git -是一个版本控制系统,是任何软件开发项目中的主要内容。通常有两个主要用途:代码备份和代码版本控制。使用Git可以逐步处理代码,在需要回滚到备份副本的过程中保存每一步的进度。

    -
    - - -
    -

    Git的安装与配置

    -

    查看Git中的配置

    -
    git config --list
    -

    Git的基本控制

    -

    初始化Git仓库

    -

    当完成上述的配置之后,就能开始初始化Git仓库,进入需要创建工作区workspace的文件夹输出git初始化的操作

    -
    cd workspace
    git init
    -

    创建一个名为 .git -的新子目录(该目录为隐藏的),其中包含所有必需的存储库文件(Git -存储库框架);注意区分工作区暂存区,在没有add之前我们都是在工作区

    -

    【Vscode】考虑Git -graph插件来可视化git分支目录的全貌

    -
      -
    • 在Github端新建仓库
      -
      - - -
      -

      根据需要可以设置为公有的或者是私有的,最好不要设置README.md,因为初始化的国过程可能会出现冲突,设置也没关系

    • -
    • 本地的Git和远端github的连接
      -

      获取本地的SSH公钥匙,打开终端并输入

      -
      ssh-keygen -t rsa -C "youremail@example.com"
      -
      - - -
      -

      进入.ssh中复制id_rsa.pub中的内容,并在Github中的如下位置复制改内容添加SSH🔗

      -
      - - -
      -

      完成连接之后再配置git的相关内容

      -
      git config --global user.email test@163.com
      git config --global user.name test

    • -
    • 本地工作区的设置
      -

      首先进行初始化设置,使当前文件夹能够使用git

      -
      git init
      -

      如果一开始没有设置README.md文件那么执行

      -
      git add README.md
      git commit -m "first commit"
      git branch -M master
      git remote add origin git@github.com.....git
      git push -u origin master
      -

      以上这些步骤,就能将本地的git和远端的仓库进行关联

    • -
    • 本地和远端关联失败
      +

      Conda 常用命令

      +

      查看conda版本

      +
      conda --version/ conda -V
      +

      查看已有环境

      +
      conda info --envs
      conda env list
      conda info -e
      +

      进退环境

      +
      conda activate  [name]# 重新进入虚拟环境
      conda deactivate # 退出虚拟环境
      +

      创建新的环境

      +
      conda create -n *** python=0
      +

      删除环境

      +
      conda remove -n old_name --all # 删除环境old_name
      +

      激活环境

      +
      conda activate xxxx # 激活xxxx环境
      +

      关闭环境

      +
      conda deactivate # 关闭环境
      +

      克隆环境

      +
      conda create -n [new_name] --clone [old_name]
      +

      升级版本

      +
      conda update -n base conda #update最新版本的conda;
      conda update --all #更新所有包
      +

      Pip管理的常用包

      +
      pip search package_name 
      pip show package_name
      pip uninstall||package_name
      pip list
      +

      删除环境中的包

      +
      conda remove package #删除当前环境中的包
      conda remove -- name env_name package #删除指定环境中的包
      +

      指定环境中安装包

      +
      conda install --name env_name package_name 
      +

      Conda环境的python版本非指定

      +

      指定虚拟环境x的python版本是3.8,base环境是3.11;conda +activate激活x之后python版本仍为3.11。

      +

      原因:在base环境中修改了.zshrc文件中的python只定路径,让每次虚拟环境中的python找到的python都只能按照指定的python路径进行寻找,从而导致conda环境中的python版本不能制定。

      +

      修改方式:

      +
      vim .zshrc
      +

      进入 +.zshrc环境中进行修改,如果发现一类诸如其他python版本指定的路径的话,需要进行删除,只需要保留最原始的关于anaconda的命令初始化,完成之后输入

      +
      source ~/.zshrc
      +

      解决问题

      +

      镜像源安装

      +

      在conda环境中改变默认的下载镜像源

      +
      pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple 
      +

      加上这句话之后就会出现以下的写文件

      +
      Writing to /home/user/.config/pip/pip.conf
      +

      下载使用清华源加上: -i +https://pypi.tuna.tsinghua.edu.cn/simple

      +
      +

      清华:https://pypi.tuna.tsinghua.edu.cn/simple/

      +

      阿里云:http://mirrors.aliyun.com/pypi/simple/

      +

      中国科技大学 +:https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/

      +

      豆瓣:http://pypi.doubanio.com/simple/

      +
      +

      如果是给conda添加镜像:清华源

      +
      conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/win-64/
      +

      添加阿里源

      +
      conda config --add channels https://mirrors.aliyun.com/pypi/simple/
      +

      查看已经添加的镜像源

      +
      conda config --show channels
      +

      移除其中的指定的镜像源

      +
      conda config --remove channels + 镜像的名称
      +

      Conda无法自动更新

      - +src="https://gitee.com/lihaibineric/picgo/raw/master/pic/image-20231206113335958.png" +alt="image-20231206113335958" /> +
      -

      当然会出现本地和远端关联失败的情况,产生的原因可能如下:

      -
        -
      1. 在默认情况下,git push时一般会上传到origin下的master分支上,当repositorybranch过多,又没有设置关联时,git就会产生疑问

        -

        通过以下命令查看远端本地的分支,并选择合适的

        -
        git branch //本地
        git branch -a //远端
        -
        - - -
      2. -
      3. 如果本地初始化的内容和远端的内容不一样,那么无法判断本地和远端的内容差异,因此需要选择如下之一

      4. -
      -
      git reset --hard origin/master
      -

      直接将远端的内容覆盖到本地

      -
      git push -f -u origin master
      -

      强行将本地的内容覆盖到远端,那么就能形成统一,从而完成链接。

    • -
    -

    添加文件和备注

    -
    git add . 
    git add <file>
    -

    执行上述命令之后将会将当前的file或者是工作区中的所有文件都上传到暂存区

    -
    git commit -m"【test】XXX更改信息提示"
    #如果多次提交想覆盖到同一个提交的备注上执行下面
    git commit --amend
    -

    上述的命令是将本次的提交添加描述,分布式协作的时候能看清

    -

    状态与日志

    -

    查看默认配置

    -
    git config --list
    -

    查看当前所在的分支位置信息

    -
    git status
    -

    查看当前分支下的更改日志

    -
    git log
    -

    推送与拉取

    -

    将本地暂存区中的更改内容推送到远端

    -
    git push
    git push -f #强行推出
    -

    将远端所在的分支内容拉到本地

    -
    git pull
    -

    更新所在分支的最新内容

    -
    git fetch --all 
    -

    复制分支

    -

    获取git连接git@ XXX.git之后执行:

    -
    git clone git@ XXX.git
    -

    如果觉得git的内容太大,可以选择内部的分支进行下载

    -
    git clone -b feature/xxx git@ XXX.git
    -

    feature/xxx为具体的分支内容

    -

    分支操作

    -

    查看分支

    -
    git branch -a #查看所有的分支
    git branch -r #查看远端的分支
    -

    切换不同的分支

    -
    git checkout [branch] #切换到分支
    -

    创建新的分支

    -
    git branch [branch] #创建新的分支
    -

    创建新的分支并切换到上面

    -
    git checkout -b [branch] #创建并切换新的分支
    -

    分支冲突

    -

    问题描述:如果当前修改的版本基于旧版,但是远端已经是新版origin/master,此时修改基于的内容和远端不同不能强行推

    -

    解决方法1:通过换基的方法解决,通过将当前的修改的旧版换到最新的基上

    -
    #先将文件提交到暂存区
    git add . #保存在暂存区
    git commit -m "XXX"
    #进行换基操作
    git rebase -i origin/master
    #再次提交
    git add .
    #继续换基
    git rebase --continue
    #换基成功后,只需要一次备注(覆盖)
    git commit --amend
    #最后退出
    git push
    git push -f #或者强行推出
    -

    解决方法2: 暴力覆盖

    -
    git fetch --all #获取远端的全部内容
    git reset --hard origin/master #强行将远端的内容覆盖到本地的文件中
    git commit --amend
    git push -f #强行推出

    +

    原因:conda和pip等相关包的版本太低,自动更新不能用,解决方案:在命令行中输入以下命令

    +
    conda clean --all
    conda update --all
    ]]>
    基础工具 - 后端开发 + 基础工具
    @@ -1078,82 +1026,352 @@ system,能够产生极高的精度;直接测量速度和距离,这进一 - 【基础工具】Anaconda命令集 - /2023/10/22/conda_list/ + 【基础工具】Git命令集 + /2023/10/23/git/ -

    Conda 常用命令

    -

    查看conda版本

    -
    conda --version/ conda -V
    -

    查看已有环境

    -
    conda info --envs
    conda env list
    conda info -e
    -

    进退环境

    -
    conda activate  [name]# 重新进入虚拟环境
    conda deactivate # 退出虚拟环境
    -

    创建新的环境

    -
    conda create -n *** python=0
    -

    删除环境

    -
    conda remove -n old_name --all # 删除环境old_name
    -

    激活环境

    -
    conda activate xxxx # 激活xxxx环境
    -

    关闭环境

    -
    conda deactivate # 关闭环境
    -

    克隆环境

    -
    conda create -n [new_name] --clone [old_name]
    -

    升级版本

    -
    conda update -n base conda #update最新版本的conda;
    conda update --all #更新所有包
    -

    Pip管理的常用包

    -
    pip search package_name 
    pip show package_name
    pip uninstall||package_name
    pip list
    -

    删除环境中的包

    -
    conda remove package #删除当前环境中的包
    conda remove -- name env_name package #删除指定环境中的包
    -

    指定环境中安装包

    -
    conda install --name env_name package_name 
    -

    Conda环境的python版本非指定

    -

    指定虚拟环境x的python版本是3.8,base环境是3.11;conda -activate激活x之后python版本仍为3.11。

    -

    原因:在base环境中修改了.zshrc文件中的python只定路径,让每次虚拟环境中的python找到的python都只能按照指定的python路径进行寻找,从而导致conda环境中的python版本不能制定。

    -

    修改方式:

    -
    vim .zshrc
    -

    进入 -.zshrc环境中进行修改,如果发现一类诸如其他python版本指定的路径的话,需要进行删除,只需要保留最原始的关于anaconda的命令初始化,完成之后输入

    -
    source ~/.zshrc
    -

    解决问题

    -

    镜像源安装

    -

    在conda环境中改变默认的下载镜像源

    -
    pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple 
    -

    加上这句话之后就会出现以下的写文件

    -
    Writing to /home/user/.config/pip/pip.conf
    -

    下载使用清华源加上: -i -https://pypi.tuna.tsinghua.edu.cn/simple

    -
    -

    清华:https://pypi.tuna.tsinghua.edu.cn/simple/

    -

    阿里云:http://mirrors.aliyun.com/pypi/simple/

    -

    中国科技大学 -:https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple/

    -

    豆瓣:http://pypi.doubanio.com/simple/

    -
    -

    如果是给conda添加镜像:清华源

    -
    conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/win-64/
    -

    添加阿里源

    -
    conda config --add channels https://mirrors.aliyun.com/pypi/simple/
    -

    查看已经添加的镜像源

    -
    conda config --show channels
    -

    移除其中的指定的镜像源

    -
    conda config --remove channels + 镜像的名称
    -

    Conda无法自动更新

    +

    Git +是一个版本控制系统,是任何软件开发项目中的主要内容。通常有两个主要用途:代码备份和代码版本控制。使用Git可以逐步处理代码,在需要回滚到备份副本的过程中保存每一步的进度。

    - +src="https://gitee.com/lihaibineric/picgo/raw/master/pic/image-20231206220759363.png" +alt="Git与GitHub" /> + +
    +

    Git的安装与配置

    +

    安装Git

    +

    直接上官网下载安装

    +

    https://link.zhihu.com/?target=https%3A//git-scm.com/download

    +

    https://git-scm.com/

    +

    或者MAC使用brew对git进行安装

    +
    brew install git
    +

    查看Git中的配置

    +
    git config --list
    git config --global user.email test@163.com
    git config --global user.name test
    +

    检查是否安装成功

    +
    git version
    +

    Git的基本控制

    +

    初始化Git仓库

    +

    当完成上述的配置之后,就能开始初始化Git仓库,进入需要创建工作区workspace的文件夹输出git初始化的操作

    +
    cd workspace
    git init
    +

    创建一个名为 .git +的新子目录(该目录为隐藏的),其中包含所有必需的存储库文件(Git +存储库框架);注意区分工作区暂存区,在没有add之前我们都是在工作区

    +

    【Vscode】考虑Git +graph插件来可视化git分支目录的全貌

    +
      +
    • 在Github端新建仓库
      +
      + + +
      +

      根据需要可以设置为公有的或者是私有的,最好不要设置README.md,因为初始化的国过程可能会出现冲突,设置也没关系

    • +
    • 本地的Git和远端github的连接
      +

      获取本地的SSH公钥匙,打开终端并输入

      +
      ssh-keygen -t rsa -C "youremail@example.com"
      +
      + + +
      +

      进入.ssh中复制id_rsa.pub中的内容,并在Github中的如下位置复制改内容添加SSH🔗

      +
      + + +
      +

      完成连接之后再配置git的相关内容

      +
      git config --global user.email test@163.com
      git config --global user.name test
    • +
    • 本地工作区的设置
      +

      首先进行初始化设置,使当前文件夹能够使用git

      +
      git init
      +

      如果一开始没有设置README.md文件那么执行

      +
      git add README.md
      git commit -m "first commit"
      git branch -M master
      git remote add origin git@github.com.....git
      git push -u origin master
      +

      以上这些步骤,就能将本地的git和远端的仓库进行关联

    • +
    • 本地和远端关联失败
      +
      + + +
      +

      当然会出现本地和远端关联失败的情况,产生的原因可能如下:

      +
        +
      1. 在默认情况下,git push时一般会上传到origin下的master分支上,当repositorybranch过多,又没有设置关联时,git就会产生疑问

        +

        通过以下命令查看远端本地的分支,并选择合适的

        +
        git branch //本地
        git branch -a //远端
        +
        + + +
      2. +
      3. 如果本地初始化的内容和远端的内容不一样,那么无法判断本地和远端的内容差异,因此需要选择如下之一

      4. +
      +
      git reset --hard origin/master
      +

      直接将远端的内容覆盖到本地

      +
      git push -f -u origin master
      +

      强行将本地的内容覆盖到远端,那么就能形成统一,从而完成链接。

    • +
    +

    添加文件和备注

    +
    git add . 
    git add <file>
    +

    执行上述命令之后将会将当前的file或者是工作区中的所有文件都上传到暂存区

    +
    git commit -m"【test】XXX更改信息提示"
    #如果多次提交想覆盖到同一个提交的备注上执行下面
    git commit --amend
    +

    上述的命令是将本次的提交添加描述,分布式协作的时候能看清

    +

    状态与日志

    +

    查看默认配置

    +
    git config --list
    +

    查看当前所在的分支位置信息

    +
    git status
    +

    查看当前分支下的更改日志

    +
    git log
    +

    推送与拉取

    +

    将本地暂存区中的更改内容推送到远端

    +
    git push
    git push -f #强行推出
    +

    将远端所在的分支内容拉到本地

    +
    git pull
    +

    更新所在分支的最新内容

    +
    git fetch --all 
    +

    复制分支

    +

    获取git连接git@ XXX.git之后执行:

    +
    git clone git@ XXX.git
    +

    如果觉得git的内容太大,可以选择内部的分支进行下载

    +
    git clone -b feature/xxx git@ XXX.git
    +

    feature/xxx为具体的分支内容

    +

    分支操作

    +

    查看分支

    +
    git branch -a #查看所有的分支
    git branch -r #查看远端的分支
    +

    切换不同的分支

    +
    git checkout [branch] #切换到分支
    +

    创建新的分支

    +
    git branch [branch] #创建新的分支
    +

    创建新的分支并切换到上面

    +
    git checkout -b [branch] #创建并切换新的分支
    +

    分支冲突

    +

    问题描述:如果当前修改的版本基于旧版,但是远端已经是新版origin/master,此时修改基于的内容和远端不同不能强行推

    +

    解决方法1:通过换基的方法解决,通过将当前的修改的旧版换到最新的基上

    +
    #先将文件提交到暂存区
    git add . #保存在暂存区
    git commit -m "XXX"
    #进行换基操作
    git rebase -i origin/master
    #再次提交
    git add .
    #继续换基
    git rebase --continue
    #换基成功后,只需要一次备注(覆盖)
    git commit --amend
    #最后退出
    git push
    git push -f #或者强行推出
    +

    解决方法2: 暴力覆盖

    +
    git fetch --all #获取远端的全部内容
    git reset --hard origin/master #强行将远端的内容覆盖到本地的文件中
    git commit --amend
    git push -f #强行推出

    +]]>
    + + 基础工具 + + + 后端开发 + +
    + + 【后端开发】Golang基础 + /2023/11/27/go-%E5%9F%BA%E7%A1%80/ + +

    学习网站:8小时转职Golang工程师

    +

    Go的环境安装

    +

    下载官网:

    +

    go的官网下载网站,选择合适的系统版本进行安装https://go.dev/dl/

    +

    安装步骤:

    +
      +
    1. 下载安装包并按照安装包的指引下载相关的内容

    2. +
    3. 对于Mac系统会直接配置好环境变量,根据官网的安装手册进行安装 https://go.dev/doc/install

    4. +
    5. 测试GO的版本

      +
      go version
      +

      go version

    6. +
    7. 测试GO的环境变量

      +
      go env
      +

      go env

    8. +
    +

    go语言没有异常,全部都用ERROR来表示

    +

    GOROOT 表示的是安装包所在的位置,一般不需要修改

    +

    GOPATH表示的是运行文件所在的位置,表示的是workspace的文件位置,里面新建三个文件夹:bin +pkg src,src一般用来表示工程文件所在的位置

    +

    修改GOPATH的路径

    +
    export GOPATH="/Users/lihaibin/workspace/golang"
    +

    将文件查找的路径设置为GOROOT和GOPATH的并集合

    +
    export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
    +

    注意这个地方不能将gomod设置为on,否则有问题

    +

    将两个部分并在一起之后,就能从两个地方开始寻找定义的包

    +
    + + +
    +

    首先会从GOROOT进行搜索,接着从GOPATH进行搜索

    +
    + + +
    +

    Go基本语法

    +

    如何编译并运行一个Go文件

    +

    对于已经写好的go文件,这里以hello.go作为例子,直接使用以下语句进行编译并运行

    +
    go run hello.go
    +

    或者将编译和运行两个过程分开,先编译后运行:

    +
    go build hello.go
    ./ hello
    +

    hello.go

    +

    首先给出基本框架

    +
    package main

    import(
    "fmt",
    "time"
    )

    func main(){
    fmt.Println("hello world!")
    time.Sleep(1*time.Second)
    }
    +

    程序的第一行声明了名为main的package。一个package会包含一个或多个.go源代码文件。每一个源文件都是以package开头。比如我们的例子里是package +main。这行声明语句表示该文件是属于哪一个package。

    +

    同时需要注意,一个程序的main入口函数必须不带任何输入参数和返回结果

    +

    参数

    +

    函数

    +

    多个返回值初始化设置了函数的形参之后,初始值是0

    +

    go每次设置一个变量值之后都有初始值,如果是数据就是0,如果是字符串那么就是空,防止出现一些野指针的情况

    +

    import和init

    +
    + + +
    +

    分别建不同的文件夹对应的就是package的名字,相应的在.go文件内部声明package的名字

    +

    注意: +在包中设置接口的时候,函数名称必须第一个字母是大写,如果是小写的话将无法识别

    +

    如果函数名第一个是大写就是对外开放的函数,认为是public

    +

    如果函数名第一个是小写的话就认为是私有的函数,认为是private

    +
    + + +
    +

    init函数的调用过程,首先会对包中的init进行初始化再进行调用接口

    +
    + + +
    +

    如果你导入了包比如lib1,但是没有使用这个包里面的接口函数,仍然会报错

    +
    + + +
    +

    但是如果我不想调用lib1的函数接口,但是想使用lib1的init()函数怎么办呢,如果这个时候直接导入了包 +但是不调用接口,就会出现上述的错误

    +

    匿名导包方式

    +

    在导入的包前面加上下划线来认为这个包是匿名的,这样就能知进行init操作

    +
    + + +
    +
    + + +
    +

    给新导入的包起个别的名字,比如叫mylib作为新的别名

    +
    + + +
    +

    或者直接使用·来进行调用

    +
    + + +
    +

    最好别使用这种,如果两个包的函数名称一样那么可能会导致出现歧义的情况

    +

    GO指针

    +

    和C++以及C中的是一样的

    +

    定义的时候 *int 传递变量的地址&

    +
    + + +
    +

    +

    数组与切片

    +

    通过这种方式进行初始化数组以及进行切片操作,通过range关键字进行遍历数组,并给出index和value进行给出不同的下标和数值

    +
    + + +
    +

    固定数组传递的是一个值拷贝

    +

    动态数组 slice

    +

    但是动态数组或者是说切片是一个引用传递

    +

    同时动态数组传递的过程中的参数形式是一致的,能够适配所有的slice参数类型,但是对于

    +
    + + +
    +
    + + +
    +

    这里面的下划线表示的是不需要考虑的index的数值,可以忽略

    +

    这里是关于切片slice的声明和打印

    +
    	//声明切片之后的长度是3,同时初始化的值是1,2,3
    slice1 :=[]int{1,2,3}
    //%v表示的是打印出全部的表示信息
    fmt.Printf("len = %d, slice =%v\n", len(slice1),slice1)
    }
    +

    打印的结果是

    +
    + + +
    +

    声明slice但是不一定声明了空间,因此需要注意的是声明的同时并给出空间大小,同时没办法中途增加空间

    +
    package main

    import (
    "fmt"
    )

    func main(){
    /*
    声明切片之后的长度是3,同时初始化的值是1,2,3
    */
    slice1 :=[]int{1,2,3}
    //%v表示的是打印出全部的表示信息
    fmt.Printf("len = %d, slice =%v\n", len(slice1),slice1)
    //直接对没有赋予空间的位置修改会出现位置越界
    //slice1[3]=999
    slice1 = make([]int,4)
    //但是这个时候就只会重新赋予空间并复制0
    fmt.Printf("len = %d, slice =%v\n", len(slice1),slice1)


    /*
    声明slice是切片,但是没有分配空间
    */
    var slice2 []int
    fmt.Printf("len = %d, slice =%v\n", len(slice2),slice2)

    //slice2[0]=2 //直接赋予数值会出现错误,越界
    slice2 = make([]int,3)
    //开辟空间,但是默认值都是0
    fmt.Printf("len = %d, slice =%v\n", len(slice2),slice2)
    slice2[0]=1000
    fmt.Printf("len = %d, slice =%v\n", len(slice2),slice2)
    //此时就修改成功

    /*
    声明slice类型,同时分配空间
    */
    var slice3 =make([]int,5)
    fmt.Printf("len = %d, slice =%v\n", len(slice3),slice3)


    /*
    判断一个slice切片是不是为0
    */
    if slice1 == nil{
    fmt.Println("slice1 is null")
    }else{
    fmt.Println("slice1 is not null")
    }
    }
    +

    注意if else的格式有要求

    +
    + + +
    +
    + + +
    +
    + + +
    +

    关于切片的截取操作

    +
    /* 
    切片的截取
    */
    var slice6 = make([]int,3)
    slice6[0]=1
    slice6[2]=33
    fmt.Printf("len = %d, cap = %d, slice =%v\n", len(slice6), cap(slice6), slice6)
    //截取的过程中是左闭右开
    s1:=slice6[0:2]
    // s1:=slice6[:]//表示截取全部
    fmt.Println(s1)
    //注意此时的s1的地址和slice6的位置一样了

    //copy
    var s2 = make([]int,3)
    copy(s2,slice6)
    fmt.Println(s2)// 只会从头开始截取s2长度的,如果长了那么就是0,
    //否则就是选择slice6中相同长度的元素,从左到右边
    +

    map的操作

    +

    反射

    +

    变量结构

    +
    + +
    -

    原因:conda和pip等相关包的版本太低,自动更新不能用,解决方案:在命令行中输入以下命令

    -
    conda clean --all
    conda update --all
    ]]>
    - 基础工具 + 后端开发 - 基础工具 + 后端开发
    @@ -1499,216 +1717,7 @@ time) ;wa: IO等待时间百分比; id: 空闲时间百分比

    基础工具
    - 后端开发 基础工具 - - - - 【后端开发】Golang基础 - /2023/11/27/go-%E5%9F%BA%E7%A1%80/ - -

    学习网站:8小时转职Golang工程师

    -

    Go的环境安装

    -

    下载官网:

    -

    go的官网下载网站,选择合适的系统版本进行安装https://go.dev/dl/

    -

    安装步骤:

    -
      -
    1. 下载安装包并按照安装包的指引下载相关的内容

    2. -
    3. 对于Mac系统会直接配置好环境变量,根据官网的安装手册进行安装 https://go.dev/doc/install

    4. -
    5. 测试GO的版本

      -
      go version
      -

      go version

    6. -
    7. 测试GO的环境变量

      -
      go env
      -

      go env

    8. -
    -

    go语言没有异常,全部都用ERROR来表示

    -

    GOROOT 表示的是安装包所在的位置,一般不需要修改

    -

    GOPATH表示的是运行文件所在的位置,表示的是workspace的文件位置,里面新建三个文件夹:bin -pkg src,src一般用来表示工程文件所在的位置

    -

    修改GOPATH的路径

    -
    export GOPATH="/Users/lihaibin/workspace/golang"
    -

    将文件查找的路径设置为GOROOT和GOPATH的并集合

    -
    export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
    -

    注意这个地方不能将gomod设置为on,否则有问题

    -

    将两个部分并在一起之后,就能从两个地方开始寻找定义的包

    -
    - - -
    -

    首先会从GOROOT进行搜索,接着从GOPATH进行搜索

    -
    - - -
    -

    Go基本语法

    -

    如何编译并运行一个Go文件

    -

    对于已经写好的go文件,这里以hello.go作为例子,直接使用以下语句进行编译并运行

    -
    go run hello.go
    -

    或者将编译和运行两个过程分开,先编译后运行:

    -
    go build hello.go
    ./ hello
    -

    hello.go

    -

    首先给出基本框架

    -
    package main

    import(
    "fmt",
    "time"
    )

    func main(){
    fmt.Println("hello world!")
    time.Sleep(1*time.Second)
    }
    -

    程序的第一行声明了名为main的package。一个package会包含一个或多个.go源代码文件。每一个源文件都是以package开头。比如我们的例子里是package -main。这行声明语句表示该文件是属于哪一个package。

    -

    同时需要注意,一个程序的main入口函数必须不带任何输入参数和返回结果

    -

    参数

    -

    函数

    -

    多个返回值初始化设置了函数的形参之后,初始值是0

    -

    go每次设置一个变量值之后都有初始值,如果是数据就是0,如果是字符串那么就是空,防止出现一些野指针的情况

    -

    import和init

    -
    - - -
    -

    分别建不同的文件夹对应的就是package的名字,相应的在.go文件内部声明package的名字

    -

    注意: -在包中设置接口的时候,函数名称必须第一个字母是大写,如果是小写的话将无法识别

    -

    如果函数名第一个是大写就是对外开放的函数,认为是public

    -

    如果函数名第一个是小写的话就认为是私有的函数,认为是private

    -
    - - -
    -

    init函数的调用过程,首先会对包中的init进行初始化再进行调用接口

    -
    - - -
    -

    如果你导入了包比如lib1,但是没有使用这个包里面的接口函数,仍然会报错

    -
    - - -
    -

    但是如果我不想调用lib1的函数接口,但是想使用lib1的init()函数怎么办呢,如果这个时候直接导入了包 -但是不调用接口,就会出现上述的错误

    -

    匿名导包方式

    -

    在导入的包前面加上下划线来认为这个包是匿名的,这样就能知进行init操作

    -
    - - -
    -
    - - -
    -

    给新导入的包起个别的名字,比如叫mylib作为新的别名

    -
    - - -
    -

    或者直接使用·来进行调用

    -
    - - -
    -

    最好别使用这种,如果两个包的函数名称一样那么可能会导致出现歧义的情况

    -

    GO指针

    -

    和C++以及C中的是一样的

    -

    定义的时候 *int 传递变量的地址&

    -
    - - -
    -

    -

    数组与切片

    -

    通过这种方式进行初始化数组以及进行切片操作,通过range关键字进行遍历数组,并给出index和value进行给出不同的下标和数值

    -
    - - -
    -

    固定数组传递的是一个值拷贝

    -

    动态数组 slice

    -

    但是动态数组或者是说切片是一个引用传递

    -

    同时动态数组传递的过程中的参数形式是一致的,能够适配所有的slice参数类型,但是对于

    -
    - - -
    -
    - - -
    -

    这里面的下划线表示的是不需要考虑的index的数值,可以忽略

    -

    这里是关于切片slice的声明和打印

    -
    	//声明切片之后的长度是3,同时初始化的值是1,2,3
    slice1 :=[]int{1,2,3}
    //%v表示的是打印出全部的表示信息
    fmt.Printf("len = %d, slice =%v\n", len(slice1),slice1)
    }
    -

    打印的结果是

    -
    - - -
    -

    声明slice但是不一定声明了空间,因此需要注意的是声明的同时并给出空间大小,同时没办法中途增加空间

    -
    package main

    import (
    "fmt"
    )

    func main(){
    /*
    声明切片之后的长度是3,同时初始化的值是1,2,3
    */
    slice1 :=[]int{1,2,3}
    //%v表示的是打印出全部的表示信息
    fmt.Printf("len = %d, slice =%v\n", len(slice1),slice1)
    //直接对没有赋予空间的位置修改会出现位置越界
    //slice1[3]=999
    slice1 = make([]int,4)
    //但是这个时候就只会重新赋予空间并复制0
    fmt.Printf("len = %d, slice =%v\n", len(slice1),slice1)


    /*
    声明slice是切片,但是没有分配空间
    */
    var slice2 []int
    fmt.Printf("len = %d, slice =%v\n", len(slice2),slice2)

    //slice2[0]=2 //直接赋予数值会出现错误,越界
    slice2 = make([]int,3)
    //开辟空间,但是默认值都是0
    fmt.Printf("len = %d, slice =%v\n", len(slice2),slice2)
    slice2[0]=1000
    fmt.Printf("len = %d, slice =%v\n", len(slice2),slice2)
    //此时就修改成功

    /*
    声明slice类型,同时分配空间
    */
    var slice3 =make([]int,5)
    fmt.Printf("len = %d, slice =%v\n", len(slice3),slice3)


    /*
    判断一个slice切片是不是为0
    */
    if slice1 == nil{
    fmt.Println("slice1 is null")
    }else{
    fmt.Println("slice1 is not null")
    }
    }
    -

    注意if else的格式有要求

    -
    - - -
    -
    - - -
    -
    - - -
    -

    关于切片的截取操作

    -
    /* 
    切片的截取
    */
    var slice6 = make([]int,3)
    slice6[0]=1
    slice6[2]=33
    fmt.Printf("len = %d, cap = %d, slice =%v\n", len(slice6), cap(slice6), slice6)
    //截取的过程中是左闭右开
    s1:=slice6[0:2]
    // s1:=slice6[:]//表示截取全部
    fmt.Println(s1)
    //注意此时的s1的地址和slice6的位置一样了

    //copy
    var s2 = make([]int,3)
    copy(s2,slice6)
    fmt.Println(s2)// 只会从头开始截取s2长度的,如果长了那么就是0,
    //否则就是选择slice6中相同长度的元素,从左到右边
    -

    map的操作

    -

    反射

    -

    变量结构

    -
    - - -
    -]]>
    - - 后端开发 - - 后端开发