词元广场TOKPUB.COM - 欢迎您,支持一个 Key 调用近 600+ 海内外模型,限时特价模型低至 1 折,欢迎上岸!

git status,知道哪些改动会被提交/undo)winget install --id Git.Git -e工作区 (Working Tree)
| git add
v
暂存区 (Index)
| git commit
v
历史记录 (Commits)| 你现在的情况 | 推荐做法 | 你要记住的关键词 |
|---|---|---|
| 你一个人写(个人项目 / 小工具) | 直接在 main 上提交并推送(不必分支、不必 PR) | status → diff → commit → push |
| 你要协作(多人 / 有 CI / 有代码审查) | 分支 + PR | branch → PR → merge → pull |
git status / git diff)add/commit/push! 就能执行(例如 !git status)。如果你更习惯普通终端,也完全没问题。.git 目录),Git 就没有“历史”可记录。git init 会提示已初始化仓库;git clone 会把代码下载到本地。.gitignore(避免把生成物、缓存、密钥提交进去):git status 来生成/更新 .gitignore:帮我检查哪些文件不必要提交,添加到 .gitignore。
要求:
1) 先运行并参考 git status / git diff(只看,不要直接提交/推送)
2) 只修改/创建 .gitignore,改完后把 .gitignore 的内容贴出来并解释每一条为什么要忽略
3) 如果发现 .env、密钥、token 之类的敏感文件,先停下提醒我.gitignore 有个“新手陷阱”.gitignore 只对“还没被 Git 跟踪的文件”生效。.gitignore 也不会消失。正确做法是先把它从仓库跟踪里移除(但保留本地文件),然后再提交:rm --cached,还需要去对应平台把密钥立刻作废并重新生成。git status 从一堆红色“未跟踪/已修改”,变成“working tree clean”(干净)。init(前面是一个短哈希)。master,建议把它改成 main(在当前分支执行就行):main:main 分支。总结下这次修改,提交并推送。先检查 git status + git diff,总结改动并给出 commit message;
我确认后再执行提交和推送。
注意:如果发现 .env、密钥、token 之类的文件,先停下提醒我。! 把关键命令跑一遍:status/diff,再 commit/push。你永远保留最后一次人工确认的机会。main 分支保护(不允许直接 push)main,compare 选 feature/first-change。pullcommit + pushgit log --oneline -5 里包含你刚才在 PR 里合并的提交。/undo 能帮你什么(别误会)/undo 用来撤销“最近一次消息导致的文件改动”。git reset,不会替你撤销已经提交(commit)或已经推送(push)的历史。git commit 了,那就用新的 commit 来修复;如果你已经 git push 了,先别乱改历史。git status 显示 working tree cleangit log --oneline -5 至少能看到 2 条提交git remote -v 能看到 origin 指向你的 GitHub 仓库git pull 不报错,并提示 up to date 或拉到新提交| 现象 | 原因 | 解决 |
|---|---|---|
git commit 报“Please tell me who you are” | 没设置作者信息 | 按第 1 步配置 user.name / user.email |
git status 看到一堆文件,不敢提交 | 不知道哪些该进仓库 | 先写 .gitignore,再用 git status 确认 |
git push 要你输密码,最后失败 | GitHub 禁用账号密码推送 | 改用 PAT(HTTPS)或 SSH key |
| 远端默认分支不对(main/master 混乱) | 分支命名不一致 | 先 git branch --show-current 确认你在 master 上,再执行 git branch -M main,然后推送 main |
不小心把 .env 提交上去了 | .gitignore 没写,或写了但已经提交过 | 立刻删除并重新生成密钥;再处理仓库历史(别拖) |
git remote add origin 提示已存在 | 你是从 GitHub clone 下来的 | 跳过添加;需要改地址用 git remote set-url origin <url> |
| 你在 GitHub 勾了 README,push 时提示冲突 | 远端不是空仓库 | 最省事:重新建一个空仓库;或按提示先 git pull --rebase 再 push |
| 你想直接 push main,但被拒绝 | 仓库开了分支保护 | 走“分支 + PR”路线,或调整仓库规则 |
下一课建议你接着看 B3 文档与 Git。 你会把今天的 Git 基础,接到 OpenCode 的日常用法里: 让 OpenCode 自动生成 commit 消息 自动写 PR 描述 用 /undo//redo回滚不满意的改动
更新时间:2026-02-06
| 功能 | 文件路径 | 行号 |
|---|---|---|
在 TUI 中用 ! 前缀执行 shell 命令(提示文案) | src/cli/cmd/tui/component/tips.tsx | 51-56 |
项目识别:从 .git 向上查找并用 root commit 生成项目 ID | src/project/project.ts | 53-110 |
/undo 的核心:对消息产生的文件补丁做 revert(调用 Snapshot) | src/session/revert.ts | 13-76 |
| Snapshot 仅在 Git 项目启用,并用内部 git repo 记录/恢复快照 | src/snapshot/index.ts | 50-76 |
Snapshot 对文件执行 git checkout <hash> -- <file> 做回滚 | src/snapshot/index.ts | 130-160 |