关于 git-logbuch
git-logbuch 是一项德语技能,以船上日志为比喻讲解项目 Git 工作流。内容包括安全提交、与 Albatros 的 Forgejo 托管库同步,以及发布或更新项目文件。
主要功能
- 01克隆项目仓库
- 02在 main 上记录小步提交
- 03提交前安全选择文件
- 04通过 Albatros Forgejo 推送与拉取
- 05使用 Light 发布静态文件
- 06更新 Pilot 服务器副本
适用场景
- 01记录项目变更历史
- 02将仓库备份到 Albatros
- 03使用 Light 发布网站修改
- 04检查或更新服务器仓库
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ dischen87/ albatros-skills --skill git-logbuch安装后在 Claude Code 中输入/git-logbuch确认已加载。
详细介绍
Git:船上的日志簿,港口里还有一份副本
这个比喻
每艘船上都有一本日志簿。每条记录都会写明:谁、何时、做了什么,以及为什么。出了问题,就往前翻,看看问题是从哪里开始的。
- **Repo:**项目的日志簿,里面有所有文件。
- **Commit:**一条记录。它记下一个小而完整的步骤,并附上一句说明。
- 港口:
code.aufwind.sh,Albatros 的 Git 服务。它的工作方式类似 GitHub,名为 Forgejo。日志簿会在这里存一份副本。就算电脑掉进水里,东西也不会丢。 - **Push:**把新记录送到港口。**Pull:**从港口取回最新记录。
**这样使用这个比喻:**在第一条回复中,先告诉对方这个比喻,再提问或展示命令,即使对方一上来就想要解决方案。
表达方式
- **不要只提问:**如果缺少项目或信息,仍要给出具体步骤,或先把文件写成草稿并标注假设(
[假设:…])。最后再询问缺少的内容。 - 使用“你”的称呼。先讲完这个比喻,再使用 Commit、Push 和 Pull;之后每次使用时,都要结合这个比喻来讲。
- 对方在浏览器中使用自己的 Albatros 账户登录港口。只有搬进自己的房子时才需要 GitHub 账户(技能
landung)。 - 绝不提交对方不了解的内容。每次记录前,都要展示将要放入的内容。
三条规则
- **只在
main上操作。**一本日志簿,一条主线。分支留给以后和大型改造时再用。 - 只逐个添加自己的文件:
git add <datei>。绝不使用git add .、git add -A或git commit -a。这些命令会把未完成的工作和.env之类的机密一起扫进日志簿。 - **绝不使用
git push --force。**如果推送被拒绝,先运行git pull --rebase,再运行git push。
流程
1. 工具
git --version会显示是否已安装 Git。在 Mac 上,电脑第一次运行时会询问是否安装开发者工具。选择是。- 技能
ssh-schluessel中的房门钥匙也能打开港口。~/.ssh/config中的Host aufwind.sh配置对两扇门都有效。 - 设置一次日志簿使用的名称:
git config --global user.name "Vorname Nachname" git config --global user.email "[email protected]"
2. 取回日志簿
Albatros 已经在港口为你创建了日志簿,并放入了模板。地址中会使用 konto_status:
git clone [email protected]:{name}/projekt.git
cd projekt
日志簿是私有的:只有你能看到。之后检查 .gitignore,至少包含以下几行:.env、.env.*、!.env.example、node_modules/、dist/。
3. 第一条记录
对方自己做一个小改动,例如在 README.md 中修改一行。然后一起运行:
git status # Was hat sich geändert?
git add README.md # Genau diese Datei aufnehmen
git diff --cached # Was kommt ins Logbuch?
git commit -m "README: Ziel des Projekts in einem Satz"
git pull --rebase && git push # In den Hafen schicken
好的说明会在 60 个字符以内写明做了什么以及为什么,例如:“联系方式:补充电话号码”。不好的说明包括“更新”“修复”“杂项”。
再添加第二条记录,让对方熟悉这个流程。然后在浏览器中展示:https://code.aufwind.sh/{name}/projekt。两条记录都会存放在港口。
4. 服务器上的日志簿
使用 Light 时没有服务器:推送本身就是发布。Albatros 会将 main 中的 seite/ 目录显示在 https://{name}.aufwind.sh 上,大约需要 30 秒。如果没有 seite/,Albatros 会改用 public/,否则就使用整个 Repo,所以要把页面放在 seite/ 中。大小最多 100 MB,Albatros 不会显示链接(Symlinks)。在浏览器中重新加载页面,改动就会显示出来。接着进行第 5 步。
**使用 Pilot 时:**你的服务器在 ~/projekt 中有自己的副本。Albatros 在设置时已创建该副本,并配置了一个只能读取你港口内容的密钥。如果日志簿中还带有传送带(.github/workflows/deploy.yml),每次推送时,它都会自动取回新记录(技能 pipeline)。检查:
ssh {name}@aufwind.sh 'git -C ~/projekt log --oneline -3'
如果没有新记录,就手动从港口取回:ssh {name}@aufwind.sh 'git -C ~/projekt pull --ff-only'。如果整个目录都不存在:ssh {name}@aufwind.sh 'git clone [email protected]:{name}/projekt.git ~/projekt'。
5. 检查任务
用 flugschule-04-git-logbuch 执行 mission_pruefen。检查会确认 main 上的日志至少有两条记录:Pilot 在服务器的 ~/projekt 中,Light 在港口中。
遇到问题时
- **在港口遇到
Permission denied (publickey):**密钥尚未配置,或者缺少~/.ssh/config中的条目(技能ssh-schluessel)。 - **推送被拒绝(
rejected):**港口中有更新的记录。执行git pull --rebase,然后执行git push。 - **Rebase 时发生冲突:**两条记录修改了同一行。在
<<<<<<<和>>>>>>>之间的文件内容中共同决定保留什么,然后执行git add <datei>、git rebase --continue和git push。 - **
git status中有他人尚未提交的更改:**不要动,也不要带上。只暂存自己的文件。 - **日志中出现秘密信息:**仅删除还不够,它仍留在旧记录中。立即使用技能
sicherheit:在服务提供商处重新生成该秘密信息。 - 恢复文件的早期版本:
git log --oneline <datei>会显示记录,git restore --source <eintrag> <datei>会将其恢复。然后新增一条记录。
收尾消息
此步骤的最后一条消息以一句关于“日志在船上,港口里有一份副本”的话开头,再次点明核心内容。接着说明已完成的工作、结果所在位置、尚未解决的事项,以及接下来要做什么。