docs: 记录 Gitea 远端接入方式
- STATUS.md:Gitea 接入标记完成,补充远端/分支/推送通道信息; 新增决策 19(SSH 走 Tailscale 内网)与 20(首次推送 force-with-lease 的取舍) - docs/05-git-workflow.md:第三节改写为实际拓扑(公网 22 被过滤、 走 Tailscale + ~/.ssh/config 域名别名),补自检、日常推送、换机步骤, 并保留仓库归属注意、补充可见性与协作者说明; 回滚一节记录被覆盖提交的恢复命令
This commit is contained in:
1 parent
96080b9dcc
commit
bcdbdd35a3
2 files changed
+71
-31
No files matched your search
@@ -4,9 +4,9 @@
|
|||||||
|
|
||||||
## 本次任务
|
## 本次任务
|
||||||
|
|
||||||
审查并精简 ChatGPT 的建库建议 → 生成骨架文件 → 配置 conda 与 venv 环境 → 初始化 git 仓库。
|
审查并精简 ChatGPT 的建库建议 → 生成骨架文件 → 配置 conda 与 venv 环境 → 初始化 git 仓库 → 接入 Gitea 远端。
|
||||||
|
|
||||||
**结论:全部完成。** 两套环境均已建成并通过验证;本地仓库已初始化并完成首次提交。
|
**结论:全部完成。** 两套环境均已建成并通过验证;仓库已推送到 `code.guzhujushi.cn`。
|
||||||
|
|
||||||
## 任务清单
|
## 任务清单
|
||||||
|
|
||||||
@@ -53,6 +53,10 @@
|
|||||||
`5319589`(76 文件 / 6812 行),工作区干净
|
`5319589`(76 文件 / 6812 行),工作区干净
|
||||||
- [x] `git ls-files --eol` 复核:**全部 LF**,`.gitattributes` 生效
|
- [x] `git ls-files --eol` 复核:**全部 LF**,`.gitattributes` 生效
|
||||||
- [x] 仓库由**本人账户 guzhu** 创建(见决策 17)
|
- [x] 仓库由**本人账户 guzhu** 创建(见决策 17)
|
||||||
|
- [x] **远端 Gitea 已接通并推送**:`origin` = `git@code.guzhujushi.cn:guzhujushi/MCM-ICM_Toolkit.git`,
|
||||||
|
`main` 跟踪 `origin/main`,远端 HEAD = `96080b9`,76 个文件已在服务器上(见决策 19/20)
|
||||||
|
- [x] 推送通道:公网 22 被防火墙过滤 → 改用 Tailscale(`100.115.86.48:22`),
|
||||||
|
`~/.ssh/config` 加了一条域名别名,remote 里仍写域名
|
||||||
|
|
||||||
### 验证结果
|
### 验证结果
|
||||||
|
|
||||||
@@ -73,8 +77,8 @@
|
|||||||
- [x] ~~两套环境版本不一致~~ → **已解决**:base 升级到 2026.07 后,
|
- [x] ~~两套环境版本不一致~~ → **已解决**:base 升级到 2026.07 后,
|
||||||
numpy/scipy/pandas/matplotlib/sklearn/statsmodels/networkx/sympy 版本完全一致,
|
numpy/scipy/pandas/matplotlib/sklearn/statsmodels/networkx/sympy 版本完全一致,
|
||||||
只差 Python 补丁号(3.13.9 vs 3.13.15)。详见 `docs/04-environment.md` §5。
|
只差 Python 补丁号(3.13.9 vs 3.13.15)。详见 `docs/04-environment.md` §5。
|
||||||
- [ ] **Gitea 远程尚未配置**:本地仓库已就绪(`main` / `5319589`),
|
- [x] ~~Gitea 远程尚未配置~~ → **已配置并推送完成**,见上面 D 节与决策 19/20。
|
||||||
只差你自己的 Gitea 地址。命令见 `docs/05-git-workflow.md` §3。
|
note:仓库当前是 **Public**(匿名 `git ls-remote` 可读),要改私有去 Gitea 仓库设置。
|
||||||
- [ ] 所有函数实现尚未开始(按 L0 → L1 顺序,见 `docs/03-roadmap.md`)
|
- [ ] 所有函数实现尚未开始(按 L0 → L1 顺序,见 `docs/03-roadmap.md`)
|
||||||
- [ ] 本机 `exec_command` 在沙箱模式下**完全不可用**
|
- [ ] 本机 `exec_command` 在沙箱模式下**完全不可用**
|
||||||
(`helper_unknown_error: setup refresh had errors`),只有提权
|
(`helper_unknown_error: setup refresh had errors`),只有提权
|
||||||
@@ -108,11 +112,13 @@
|
|||||||
| 16 | 新增 `.gitattributes` 强制 LF | 仓库要给队友在 Windows/WSL/Linux 上 clone,不固定行尾会产生"整文件都变了"的假 diff |
|
| 16 | 新增 `.gitattributes` 强制 LF | 仓库要给队友在 Windows/WSL/Linux 上 clone,不固定行尾会产生"整文件都变了"的假 diff |
|
||||||
| 17 | `.git` 由**本人账户 guzhu** 重建,不做 `safe.directory` 豁免 | 沙箱通道建的 `.git` Owner 是 `CodexSandboxOffline`,git 会报 dubious ownership。加全局豁免是把问题藏起来;直接以本人账户重建,仓库和远程(Gitea)身份一致 |
|
| 17 | `.git` 由**本人账户 guzhu** 重建,不做 `safe.directory` 豁免 | 沙箱通道建的 `.git` Owner 是 `CodexSandboxOffline`,git 会报 dubious ownership。加全局豁免是把问题藏起来;直接以本人账户重建,仓库和远程(Gitea)身份一致 |
|
||||||
| 18 | `core.autocrlf=false`(仓库级) | 配合 `.gitattributes` 的 LF 策略,避免 Windows 上 checkout 又转成 CRLF |
|
| 18 | `core.autocrlf=false`(仓库级) | 配合 `.gitattributes` 的 LF 策略,避免 Windows 上 checkout 又转成 CRLF |
|
||||||
|
| 19 | Gitea 的 SSH **走 Tailscale 内网**,不在公网开 22 | 实测公网 `8.145.36.108:22` 超时(服务器侧过滤,本机出站 22 没被封:github.com:22 可通),而 Tailscale `100.115.86.48:22` 可达且 `git@` 认证直接过 Gitea。remote 里仍写域名,域名→内网 IP 的映射放在 `~/.ssh/config`,换机只改一处 |
|
||||||
|
| 20 | 首次推送用 `--force-with-lease` **覆盖** Gitea 的 `Initial commit` | 远端那个提交是建仓时自动初始化产生的,与本地无共同祖先,普通 push 必被拒。推送前已把其中的 LICENSE 与手写简介并入本地 `README.md`,原提交仍留在本机对象库(`1c683cf`) |
|
||||||
|
|
||||||
## 下一步
|
## 下一步
|
||||||
|
|
||||||
1. 在 Gitea 建**空**仓库(不要初始化)→ `git remote add origin ...` → `git push -u origin main`
|
1. ~~接入 Gitea~~ **已完成**。以后推送前先确认 Tailscale 在线,然后 `git push`
|
||||||
(命令见 `docs/05-git-workflow.md` §3,HTTPS 与 SSH 两版都有)。
|
(细节与换机步骤见 `docs/05-git-workflow.md` §3)。
|
||||||
2. 按 `docs/03-roadmap.md` 的 **L0(12 个函数)** 顺序填实现,先写测试再写代码。
|
2. 按 `docs/03-roadmap.md` 的 **L0(12 个函数)** 顺序填实现,先写测试再写代码。
|
||||||
3. 每写完一个函数,在 `examples/` 里加一行最小用法,并更新本文件。
|
3. 每写完一个函数,在 `examples/` 里加一行最小用法,并更新本文件。
|
||||||
4. L0 跑通后,找一道真题(建议 2025 C)走完整流程,反向沉淀函数。
|
4. L0 跑通后,找一道真题(建议 2025 C)走完整流程,反向沉淀函数。
|
||||||
+59
-25
@@ -67,40 +67,73 @@ git commit -m "feat(stats): 实现 bootstrap_ci"
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 三、推到自己的 Gitea
|
## 三、远程托管(已配置)
|
||||||
|
|
||||||
### 1. 在 Gitea 上建空仓库
|
| 项 | 值 |
|
||||||
|
|---|---|
|
||||||
|
| Gitea 网页 | https://code.guzhujushi.cn/guzhujushi/MCM-ICM_Toolkit |
|
||||||
|
| 服务器公网 IP | `8.145.36.108`(实测只开了 443,**22 被防火墙过滤**) |
|
||||||
|
| 服务器 Tailscale IP | `100.115.86.48`(22 开放) |
|
||||||
|
| 本机 Tailscale IP | `100.124.243.30` |
|
||||||
|
| git 远端 | `git@code.guzhujushi.cn:guzhujushi/MCM-ICM_Toolkit.git` |
|
||||||
|
|
||||||
不要勾选"初始化仓库"(不要生成 README / .gitignore / LICENSE),
|
### 为什么走 Tailscale
|
||||||
否则首次 push 会冲突。
|
|
||||||
|
|
||||||
### 2. 加远程并推送
|
公网 22 端口连不上(`ssh: connect to host code.guzhujushi.cn port 22: Connection timed out`),
|
||||||
|
但同一台机器的 Tailscale 地址 22 端口是通的,且 `git@` 认证直接通过 Gitea。
|
||||||
|
所以 `~/.ssh/config` 里加了一条别名把域名指到内网地址:
|
||||||
|
|
||||||
|
```sshconfig
|
||||||
|
Host code.guzhujushi.cn
|
||||||
|
HostName 100.115.86.48
|
||||||
|
User git
|
||||||
|
IdentityFile ~/.ssh/id_ed25519
|
||||||
|
```
|
||||||
|
|
||||||
|
这样 remote 里写的是域名,换机时只改这一段 config,不用动仓库配置。
|
||||||
|
|
||||||
|
**推送前先连上 Tailscale**,否则 `git push` 会一直等到超时。
|
||||||
|
|
||||||
|
### 自检
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
ssh -T git@code.guzhujushi.cn
|
||||||
|
# 期望输出:Hi there, guzhujushi! You've successfully authenticated with the key named ...
|
||||||
|
```
|
||||||
|
|
||||||
|
### 日常推送
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
cd D:\MCM&ICM_Toolkit
|
cd D:\MCM&ICM_Toolkit
|
||||||
|
git add -A
|
||||||
# 换成你自己的 Gitea 地址
|
git commit -m "feat(stats): 实现 bootstrap_ci"
|
||||||
git remote add origin https://git.你的域名/用户名/mcm-icm-toolkit.git
|
git push
|
||||||
|
|
||||||
# 如果 Gitea 用的是自签证书,先在浏览器里访问一次并信任,或:
|
|
||||||
# git config --global http.sslBackend schannel
|
|
||||||
|
|
||||||
git branch -M main
|
|
||||||
git push -u origin main
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3. 用 SSH(推荐,免密)
|
### 换一台机器 / 加一个协作者
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
ssh-keygen -t ed25519 -C "guzhu@mcm-toolkit"
|
# 1) 装 Tailscale 并加入同一个 tailnet
|
||||||
|
# 2) 生成并上传密钥
|
||||||
|
ssh-keygen -t ed25519 -C "your@email"
|
||||||
Get-Content "$env:USERPROFILE\.ssh\id_ed25519.pub" | Set-Clipboard
|
Get-Content "$env:USERPROFILE\.ssh\id_ed25519.pub" | Set-Clipboard
|
||||||
# 粘贴到 Gitea → 设置 → SSH/GPG 密钥
|
# 粘贴到 Gitea → 设置 → SSH/GPG 密钥
|
||||||
|
# 3) 写上面的 ~/.ssh/config 别名
|
||||||
git remote set-url origin git@git.你的域名:用户名/mcm-icm-toolkit.git
|
# 4) 克隆
|
||||||
git push -u origin main
|
git clone git@code.guzhujushi.cn:guzhujushi/MCM-ICM_Toolkit.git
|
||||||
```
|
```
|
||||||
|
|
||||||
### 4. 仓库归属注意(重要)
|
不想用 Tailscale 的话,也可以用 HTTPS + Gitea 访问令牌,
|
||||||
|
代价是每次推送要输凭据(或交给凭据助手缓存):
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
git remote add origin https://code.guzhujushi.cn/guzhujushi/MCM-ICM_Toolkit.git
|
||||||
|
```
|
||||||
|
|
||||||
|
> 注意:`git config --global http.proxy` 目前指向 UniClash(`127.0.0.1:7993`),
|
||||||
|
> HTTPS 方式会被代理绕一圈;SSH 方式不受该配置影响。
|
||||||
|
|
||||||
|
### 仓库归属注意(重要)
|
||||||
|
|
||||||
`.git` 必须是**你自己的账户**创建的。若用沙箱化的 AI agent 通道代跑 `git init`,
|
`.git` 必须是**你自己的账户**创建的。若用沙箱化的 AI agent 通道代跑 `git init`,
|
||||||
它可能以别的账户身份创建 `.git`,之后你自己跑 git 就会报:
|
它可能以别的账户身份创建 `.git`,之后你自己跑 git 就会报:
|
||||||
@@ -118,12 +151,10 @@ git push -u origin main
|
|||||||
同理,沙箱通道写出的文件 Owner 会是沙箱账户,但权限继承自
|
同理,沙箱通道写出的文件 Owner 会是沙箱账户,但权限继承自
|
||||||
`Authenticated Users`(Modify),读写不受影响,只有 git 的归属检查会误报。
|
`Authenticated Users`(Modify),读写不受影响,只有 git 的归属检查会误报。
|
||||||
|
|
||||||
### 5. 如果不想公开
|
### 可见性与协作者
|
||||||
|
|
||||||
Gitea 建仓库时选 **Private**。队友通过
|
匿名 `git ls-remote` 实测可读 → 仓库当前是 **Public**。要改私有:
|
||||||
仓库设置 → 协作者 → 添加成员 授权。
|
仓库设置 → 基本设置 → 可见性。加队友:仓库设置 → 协作者 → 添加成员。
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 四、给队友的说明
|
## 四、给队友的说明
|
||||||
|
|
||||||
@@ -146,6 +177,9 @@ cd mcm-icm-toolkit
|
|||||||
环境升级出问题时的回退手段:
|
环境升级出问题时的回退手段:
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
|
# 远端被覆盖过一次(首次推送),那个提交仍在本机对象库里:
|
||||||
|
# git push origin 1c683cf:refs/heads/restore-initial
|
||||||
|
|
||||||
# conda 自己保留了 revision 历史
|
# conda 自己保留了 revision 历史
|
||||||
conda list -n base --revisions
|
conda list -n base --revisions
|
||||||
conda install -n base --revision <N>
|
conda install -n base --revision <N>
|
||||||
|
|||||||
Reference in new issue
Block a user