[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80479":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":12,"openIssues":12,"contributorsCount":11,"subscribersCount":11,"size":11,"stars1d":11,"stars7d":11,"stars30d":11,"stars90d":11,"forks30d":11,"starsTrendScore":11,"compositeScore":11,"rankGlobal":8,"rankLanguage":8,"license":13,"archived":14,"fork":14,"defaultBranch":15,"hasWiki":16,"hasPages":14,"topics":17,"createdAt":8,"pushedAt":8,"updatedAt":18,"readmeContent":19,"aiSummary":20,"trendingCount":11,"starSnapshotCount":11,"syncStatus":21,"lastSyncTime":22,"discoverSource":23},80479,"gitreal","watany-dev\u002Fgitreal","watany-dev",null,"Go",77,0,1,"MIT License",false,"main",true,[],"2026-06-12 02:04:02","# GitReal\n\nGitReal is a Git subcommand that turns \"I should push later\" into a deadline.\n\nWhen a challenge fires, you have 2 minutes to push your local commits. If you miss the window, GitReal can reset your branch back to its upstream state. By default, it stays in dry-run mode, so you can try the workflow before allowing destructive behavior.\n\nThe distributed binary is named `git-real`, and Git exposes it to users as:\n\n```bash\ngit real\n```\n\n## Why You Would Use It\n\n- You want a push habit, not just a reminder.\n- You want the pressure of a timer without giving up recovery options.\n- You want to try it safely before enabling real resets.\n\n## Quick Start\n\nInstall:\n\n```bash\ngo install github.com\u002Fwatany-dev\u002Fgitreal\u002Fcmd\u002Fgit-real@latest\n```\n\nTry it in a repository:\n\n```bash\ngit real init\ngit real status\ngit real once\n```\n\n`git real once`, `git real start`, `git real arm`, and `git real disarm` require `git real init` first. `git real status` and `git real rescue ...` are still available before initialization.\n\nIf you want GitReal to run continuously in the foreground:\n\n```bash\ngit real start\n```\n\n## What Happens In Practice\n\n1. Run `git real init` once per repository.\n2. GitReal stores repo-local config and starts in dry-run mode.\n3. A challenge checks whether your current branch is ahead of its upstream.\n4. If you push in time, nothing happens.\n5. If you miss the deadline:\n\n- in dry-run mode, GitReal only tells you what it would have reset\n- in armed mode, GitReal backs up `HEAD` and resets the branch to `@{u}`\n\n## Safety First\n\nGitReal is intentionally conservative:\n\n- Default mode is dry-run.\n- Destructive behavior requires an explicit `git real arm`.\n- Before any reset, GitReal stores the current `HEAD` under `refs\u002Fgitreal\u002Fbackups\u002F...`.\n- `git real rescue restore \u003Cref>` also backs up the current `HEAD` before restoring a backup.\n- Dirty worktree changes are stashed and then restored when possible.\n- `Ctrl-C` (SIGINT or SIGTERM) is honored at any point during a challenge: if you cancel\n  before the deadline, no penalty is applied.\n\nIf you want real enforcement for the current repository:\n\n```bash\ngit real arm\n```\n\nTo go back to safe mode:\n\n```bash\ngit real disarm\n```\n\n## Recovery\n\nList available backups:\n\n```bash\ngit real rescue list\n```\n\nRestore one:\n\n```bash\ngit real rescue restore \u003Cref>\n```\n\n## Commands\n\n```bash\ngit real init\ngit real status\ngit real once [--grace-seconds=120]\ngit real start [--grace-seconds=120]\ngit real arm\ngit real disarm\ngit real rescue list\ngit real rescue restore \u003Cref>\n```\n\nCommand intent:\n\n- `git real init`: enable GitReal for the current repository and write default config\n- `git real status`: show current repo state, upstream, and ahead count\n- `git real once`: run one challenge immediately\n- `git real start`: stay in the foreground and schedule hourly random challenges over time\n- `git real arm`: allow real resets for missed deadlines\n- `git real disarm`: return to dry-run mode\n- `git real rescue ...`: inspect and restore backup refs\n\n## Current Limits\n\nThis beta currently expects:\n\n- the current branch has an upstream branch\n- the repository is not in detached `HEAD`\n- desktop notifications may fail and fall back to terminal output\n- `git real start` is the current scheduler entrypoint\n- `git real daemon` is not implemented yet\n\n## Configuration\n\nGitReal stores settings in Git config:\n\n```bash\ngit config --local gitreal.enabled true\ngit config --local gitreal.armed false\ngit config --local gitreal.graceSeconds 120\n```\n\nCurrent keys:\n\n- `gitreal.enabled`\n- `gitreal.armed`\n- `gitreal.graceSeconds`\n\n## Build From Source\n\n```bash\ngo build -o git-real .\u002Fcmd\u002Fgit-real\n```\n\n## Development\n\nProject checks:\n\n```bash\ngo mod download\nmake fmt\nmake test\nmake check\n```\n\n`make check` runs formatting, linting, type-check compilation, dead-code detection, and the coverage gate.\n\n## Releases\n\nCurrent beta distribution targets:\n\n- `go install`\n- GitHub Releases for macOS, Linux, and Windows\n\nRelease archives are published as:\n\n- `git-real_darwin_amd64.tar.gz`\n- `git-real_darwin_arm64.tar.gz`\n- `git-real_linux_amd64.tar.gz`\n- `git-real_linux_arm64.tar.gz`\n- `git-real_windows_amd64.zip`\n- `SHA256SUMS`\n- `SHA256SUMS.sig` (cosign keyless signature)\n- `SHA256SUMS.pem` (cosign certificate)\n\n### Verifying a release\n\nReleases are built with `-trimpath` and a pinned `SOURCE_DATE_EPOCH` so the\nbinaries are reproducible from the tagged commit. The `SHA256SUMS` file is\nsigned with [cosign](https:\u002F\u002Fgithub.com\u002Fsigstore\u002Fcosign) keyless mode, tied to\nthe GitHub Actions OIDC identity for this repository.\n\n```bash\ncosign verify-blob \\\n  --certificate SHA256SUMS.pem \\\n  --signature SHA256SUMS.sig \\\n  --certificate-identity-regexp '^https:\u002F\u002Fgithub.com\u002Fwatany-dev\u002Fgitreal\u002F' \\\n  --certificate-oidc-issuer https:\u002F\u002Ftoken.actions.githubusercontent.com \\\n  SHA256SUMS\n\nsha256sum --check SHA256SUMS\n```\n\nYou can confirm a downloaded binary matches the published source revision with:\n\n```bash\ngit real --version\n# git-real v0.x.y (\u003Ccommit>, built \u003Ciso8601-date>)\n```\n\n## More Detail\n\nDesign notes and implementation rationale live in [docs\u002Fdevelopment-memo.md](docs\u002Fdevelopment-memo.md).\n","GitReal 是一个 Git 子命令工具，旨在通过设定截止时间来促使用户及时推送本地提交。其核心功能是当挑战触发时，用户有两分钟的时间来推送代码；若错过时间窗口，GitReal 可以将分支重置为远程状态。默认情况下，该工具处于干运行模式，确保在启用破坏性行为前可以安全测试工作流。适合需要养成定期推送习惯、希望在保持恢复选项的同时感受到时间压力的开发者使用。采用 Go 语言编写，安装简单，支持多种命令如初始化、状态查看、单次挑战等，并提供详尽的安全措施和恢复机制保障数据安全。",2,"2026-06-11 04:00:54","CREATED_QUERY"]