点我展开:基本信息
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依赖包
激活你的 Conda 环境(如果尚未激活):
conda activate 你的环境名安装
requirements.txt中的依赖包:pip install -r requirements.txt
注:pip 是 Python 的包管理工具,用于安装、升级、卸载 Python 包,常用命令包括 install、uninstall、list、freeze 等,支持使用国内镜像源加速下载。
新项目环境配置工作流
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和其他所有分支的信息,可切换到各个分支进行操作。
克隆仓库到本地并上传
- 到达指定目录
# 若文件夹project存在
cd "/path/to/your/project"
# 若文件夹不存在
cd "/path/to/your/"
mkdir project
cd project
- 初始化 Git 仓库
cd /path/to/your/project
git init # 初始化文件夹,使其支持git
- 克隆现有仓库
git clone <仓库URL>
本地修改
查看修改状态
# 修改状态是与上一次提交对比的
git status
- 将文件添加到暂缓区
# 单个文件添加到暂存区
git add
# 添加所有更改的文件到暂存区
git add .
- 提交更改
# 提交到给git系统
git commit -m "提交信息"
- 查看历史提交记录
git log --oneline
- 推送到远程仓库
# 本地推送到远程仓库分支,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
上传本地文件到新的仓库
- 首先在GitHub上面创建一个仓库,仓库中存在README文件。
- 将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
远程合作更新数据场景
远程仓库分支有人更新自己分支后需要拉取最新信息。
- 仅拉取更新动态,及
git log中的信息更新,文件的信息不更新:git fetch - 拉取log更新及文件合并更新:
git pull
- 仅拉取更新动态,及
提交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
回滚场景的预演
当前代码修改错误,需要回退到之前特定的提交。
查看所有提交信息:
git log --oneline回退特定提交(撤销特定提交的id):
git revert --no-edit e48cae1
3.1 没有冲突,即回退到特定位置。
3.2 可能会出现冲突,这个时候会进入到 (master|REVERTING),按照如下步骤:
查看存在冲突的信息:
git status进入有冲突的文件:
nano main.py修改有冲突的内容(两个文件均对相同行的内容进行了修改,系统不知道对冲突如何处理)
<<<<<<< HEAD <当前分支的内容> ======= <要撤销的提交的内容> >>>>>>> 69f78b4475fd6bbde2a1421dc395129f6d89cd94
进行新的提交:
git add . && git commit -m "xxxx"查看提交记录:
git log --oneline
注:回到revert id 的前一次提交,可以通过git revert --skip 取消这次回退。
其他知识积累
- 查看本地有但远程没有的提交。
git log origin/main..main
- 代理打开后,网页走代理但是终端不走代理,可以先找出代理端口,再设置终端怎么走:
PS C:\Users\24561> Get-NetTCPConnection -State Listen |
>> Where-Object { $_.LocalAddress -eq '127.0.0.1' -and $_.LocalPort -ge 1000 } |
>> Select-Object LocalPort,OwningProcess -Unique |
>> ForEach-Object {
>> $proc=(Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).Name
>> [PSCustomObject]@{Port=$_.LocalPort;Process=$proc}
>> }
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
- conda环境也可能会不走代理
$env:HTTP_PROXY="http://127.0.0.1:1080"
$env:HTTPS_PROXY="http://127.0.0.1:1080"
对于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。
我不小心修改了远程仓库的一些代码怎么办?
git checkout origin/main -- main.py将对于代码段内容返回到远程中。# 重新提交 git add . git commit --amend --no-edit # 合并到上一个提交中,保持 log 干净 git push origin xiaoyao_branch -f
其他问题
- 为什么远程创建了一个新的分支,本地查看分支没有找到?
- 优先更新分支:
git fetch origin - 之后再查看:
git branch -r - 切换到对应分支:
git checkout 新分支名 - 确认当前的分支:
git branch --show-current
- 优先更新分支:

