点我展开:基本信息

Conda 管环境,Git 管版本,两者互相独立又可无缝串联: “激活 Conda → git clone → 开发 → git push” 就是日常最顺手的黄金流程。

 一体化工作流

日常最小循环

conda activate myenv   # 1. 进环境(如果已在当前环境可跳过)
cd /d D:\repo          # 2. 进入conda路径,进项目文件夹(如果已在此目录可跳过)
conda python test.py   # 运行测试文件
conda deactivate

# pyCharm写代码...

cd "D:\repo"		   # 进入git路径
git add .              # 3. 每改动一次
git commit -m "msg"
git push               # 4. 想同步时再 push

conda终端

路径管理

代码 功能
dir 查看当前文件夹内容
cd .. 返回上一级文件
cd xxx xxx为当前文件夹里面的内容
cd /d F:\xxx 切换路径(/d保证不同盘符也能切换)

环境管理

命令 说明
conda list 列出当前激活环境中的所有包。
conda list -n 环境名 列出指定环境中的所有包。
conda create -n 新环境名 python=版本号 创建一个新环境,并指定 Python 版本。
conda create -n 新环境名 python=版本号 numpy pandas 创建一个新环境,并安装指定的包。
conda activate 环境名 激活指定的环境。
conda deactivate 退出当前激活的环境。
conda info --envs 列出所有可用的环境及其路径。
conda remove --name 环境名 --all 删除指定的环境及其所有包。

包管理

命令 说明
conda install 包名 安装指定的包到当前激活的环境。
conda install -n 环境名 包名 安装指定的包到指定的环境。
conda update 包名 更新当前激活环境中的指定包。
conda update --all 更新当前激活环境中的所有包。
conda remove 包名 从当前激活的环境中移除指定的包。
conda search 包名 搜索可用的包。

安装requirement.txt依赖包

  1. 激活你的 Conda 环境(如果尚未激活):conda activate 你的环境名

  2. 安装 requirements.txt 中的依赖包pip install -r requirements.txt

注:pip 是 Python 的包管理工具,用于安装、升级、卸载 Python 包,常用命令包括 installuninstalllistfreeze 等,支持使用国内镜像源加速下载。

新项目环境配置工作流

step1:创建新环境,conda create MyProject python = 版本号

step2:进入所在项目路径cd /d xxx,导入依赖包:pip install -r requirements.txt

step3:打开pycharm,导入新项目,文件→setting→项目:→python解释器→添加→Conda环境→现有环境

step4:输入解释器路径,执行当前项目的python.exe,一般是在对应conda环境下的python,例如:E:\anaconda\envs\MyProject\python.exe,可以在conda prompt中激活对应环境,输入where python找到对应环境下python.exe的路径

step5:输入conda可执行文件路径,用于管理conda环境的应用文件,直接在everything查找conda.exe

step6:环境配置完成,可在pycharm进行编写

conda内核配置在jupyter notebook中

​ 将jupyter notebook理解为一个包,其作用是打开一个网页,需要在不同conda环境下面安装后调用。

step1:进入到需要使用notebook的环境中:conda activate myenv

step2:安装notebook:conda install notebook

step3:将当前环境加入到jupyter内核中去:python -m ipykernel install --user --name mathematical_modeling --display-name "Python(mathematical_modeling)"

step3:移动到需要调用jupyter notebook的路径下:cd /d F:xxx

step4:启动notebook:jupyter notebook\jupyter lib

git终端

在 Git Bash 中可以使用 Git 来管理代码。Git Bash 是 Git 的一个命令行工具,它提供了一个类似 Linux 的环境,让你可以在 Windows 系统上使用 Git 命令。Git 是一个分布式版本控制系统,用于跟踪文件和目录的更改,非常适合管理代码。

git中本地会保留main和其他所有分支的信息,可切换到各个分支进行操作。

克隆仓库到本地并上传

  1. 到达指定目录
# 若文件夹project存在
cd "/path/to/your/project"

# 若文件夹不存在
cd "/path/to/your/"
mkdir project
cd project
  1. 初始化 Git 仓库
cd /path/to/your/project
git init # 初始化文件夹,使其支持git
  1. 克隆现有仓库
git clone <仓库URL>
  1. 本地修改

  2. 查看修改状态

# 修改状态是与上一次提交对比的
git status
  1. 将文件添加到暂缓区
# 单个文件添加到暂存区
git add

# 添加所有更改的文件到暂存区
git add .
  1. 提交更改
# 提交到给git系统
git commit -m "提交信息"
  1. 查看历史提交记录
git log --oneline
  1. 推送到远程仓库
# 本地推送到远程仓库分支,origin是固定的。
git push origin <分支名>

# 推送到main
git push origin main

clone远程库并创建本地新的分支

# 克隆远程仓库
git clone <repo-url>
cd your-repo

# 查看所有分支
git branch -a

# 基于 main 创建并切换到本地分支
git checkout -b feature-x main

上传本地文件到新的仓库

  1. 首先在GitHub上面创建一个仓库,仓库中存在README文件。
  2. 将git bash中的路径移到对应文件夹下面,之后输入如下代码:
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/Bigdata-xy/project.git
git push -u origin main

远程合作更新数据场景

  1. 远程仓库分支有人更新自己分支后需要拉取最新信息。

    • 仅拉取更新动态,及git log中的信息更新,文件的信息不更新:git fetch
    • 拉取log更新及文件合并更新:git pull
  2. 提交pr时,与main存在冲突,核心是将main中的最新信息合并到本地分支中

    • 拉取目标分支的最新更改:

      git checkout master #切换到本地master分支
      git pull origin master #更新最新的master
      
    • 切换到你的分支:git checkout feature-branch

    • 合并目标分支的更改:git merge master

    • 查看冲突信息(如果存在):git status

    • 手动解决冲突

      # 打开冲突文件
      nano test.py
      
      <<<<<<< HEAD
      这是你的分支中的内容
      =======
      这是目标分支中的内容
      >>>>>>> master
      
    • 标记冲突已解决:git add test.py

    • 完成所有冲突后合并:git commit -m "xxx"

    • 推送更改到远程分支:git push origin feature-branch

回滚场景的预演

当前代码修改错误,需要回退到之前特定的提交。

  1. 查看所有提交信息:git log --oneline

  2. 回退特定提交(撤销特定提交的id):git revert --no-edit e48cae1

3.1 没有冲突,即回退到特定位置。

3.2 可能会出现冲突,这个时候会进入到 (master|REVERTING),按照如下步骤:

  • 查看存在冲突的信息:git status

  • 进入有冲突的文件:nano main.py

  • 修改有冲突的内容(两个文件均对相同行的内容进行了修改,系统不知道对冲突如何处理)

    <<<<<<< HEAD
    <当前分支的内容>
    =======
    <要撤销的提交的内容>
    >>>>>>> 69f78b4475fd6bbde2a1421dc395129f6d89cd94
    
  1. 进行新的提交:git add . && git commit -m "xxxx"

  2. 查看提交记录:git log --oneline

注:回到revert id 的前一次提交,可以通过git revert --skip 取消这次回退。

其他知识积累

  1. 查看本地有但远程没有的提交。

git log origin/main..main

  1. 代理打开后,网页走代理但是终端不走代理,可以先找出代理端口,再设置终端怎么走:
PS C:\Users\24561> Get-NetTCPConnection -State Listen |
>>   Where-Object &#123; $_.LocalAddress -eq '127.0.0.1' -and $_.LocalPort -ge 1000 &#125; |
>>   Select-Object LocalPort,OwningProcess -Unique |
>>   ForEach-Object &#123;
>>     $proc=(Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).Name
>>     [PSCustomObject]@&#123;Port=$_.LocalPort;Process=$proc&#125;
>>   &#125;

 Port Process
 ---- -------
50010 WXWork
49683 nimdnsResponder
49678 SunloginClient
49677 SunloginClient
 4709 wpscloudsvr
 3213 OriginWebHelperService
 1080 ShadowsocksR   # 1080为终端端口
 
# 将终端git设置为代理端口
PS C:\Users\24561> git config --global https.proxy http://127.0.0.1:1080
PS C:\Users\24561> git config --global http.proxy http://127.0.0.1:1080
  1. conda环境也可能会不走代理
$env:HTTP_PROXY="http://127.0.0.1:1080"
$env:HTTPS_PROXY="http://127.0.0.1:1080"
  1. 对于PR的习惯问题

    ​ 在正式提交前,有两个核心点,一个是不要和远程仓库存在冲突,第二个是要给自己的分支内容先备份一下。`

    • git add .git commit -m "back_branch"
    • git pull origin main --rebase 拉取远程仓库最新更新,并且对log记录进行重新整理,从拉取结点开始计算,本地提取记录均在main提交之后。
    • git push origin xiaoyao_branch -f这里要-f提交的id全部变了,远程仓库会拒绝普通的push,必须强制push。
  2. 我不小心修改了远程仓库的一些代码怎么办?

    • git checkout origin/main -- main.py将对于代码段内容返回到远程中。

    • # 重新提交
      git add .
      git commit --amend --no-edit  # 合并到上一个提交中,保持 log 干净
      git push origin xiaoyao_branch -f
      

其他问题

  1. 为什么远程创建了一个新的分支,本地查看分支没有找到?
    • 优先更新分支:git fetch origin
    • 之后再查看:git branch -r
    • 切换到对应分支:git checkout 新分支名
    • 确认当前的分支:git branch --show-current

SZUer继续加油!