zev و Git
zev چه کارهایی میکند که Git نمیکند، چه چیزهایی یکسان میماند، و هر دستور روزمرهٔ Git کنار شکل zev آن.
دنبال فرمانی برای اجرا بگردید…
zev چه کارهایی میکند که Git نمیکند، چه چیزهایی یکسان میماند، و هر دستور روزمرهٔ Git کنار شکل zev آن.
«Git که هست، پس چرا zev؟» چون zev کارهایی را انجام میدهد که Git به خود شما یا ابزارهای دیگر میسپارد: یک zev undo برای هر اشتباه، تعارضهایی که میتوانید کامیتشان کنید و بعداً حل کنید، بازبینی پشتهای، ذخیرهٔ فایلهای بزرگ، امضای کامیتها، گواه اینکه سرور هنوز کار شما را نگه داشته، و خروجیای ساختهشده برای اسکریپتها و عاملهای هوش مصنوعی. پاسخ کاملتر در چرا zev است. اگر Git را میشناسید، کار با zev را هم بلدید. دستورهای روزمره همان نامها را دارند و همان کارها را میکنند.
| Git | zev | |
|---|---|---|
| فایلهای بزرگ | هر نسخه یک شیء کامل تازه است؛ فایل بزرگ به Git LFS و سرور جداگانهاش نیاز دارد | فایلها بر پایهٔ محتوا قطعهقطعه میشوند، پس یک ویرایش در push و pull فقط قطعههای اطرافش را میفرستد. قطعهبندی بر پایهٔ محتوا |
| کامیتهای امضاشده | پیشفرض خاموش؛ کلید GPG یا SSH برای هر رایانه باید راه بیفتد | هر کامیت تازه بی هیچ تنظیمی روی رایانهٔ شما امضا میشود. کلید را یک بار بیفزایید تا Zaryn کامیت را تأییدشده نشان دهد. کامیتهای امضاشده |
| گواه نگهداری کار شما | به میزبان اعتماد میکنید | zev verify-storage بررسی میکند که سرور واقعاً آخرین push شما را دارد، و رسیدهای امضاشدهٔ روزانه همهٔ اشیا را میپوشانند. ذخیرهسازی راستیآزماییشده |
| رمزنگاری | هیچ: میزبان همهچیز را میخواند | مخزنهای رمزنگاریشده روی رایانهٔ شما مهر میشوند؛ سرور چیزی را نگه میدارد که نمیتواند بخواند. مخزنهای رمزنگاریشده |
| برگرداندن | یک reflog برای هر شاخه، و دستورالعمل git reset جدا برای هر اشتباه؛ انتخاب اشتباه کار را دور میریزد | zev undo آخرین کامیت، ادغام، rebase، شاخهٔ پاکشده یا add را برمیگرداند و هرگز کاری را که جایی ذخیره نشده بازنویسی نمیکند. zev op log همهٔ تغییرها را فهرست میکند. هر کاری را برگردانید |
| ویرایشهایی که دور ریختید | git checkout -- file یا git reset --hard آنها را برای همیشه پاک میکند | zev اول نسخهای نگه میدارد؛ zev recover برشان میگرداند و هرگز کار تازهتر را بازنویسی نمیکند. هر کاری را برگردانید |
| تعارضهای ادغام | متوقفتان میکنند: تا همهٔ فایلها حل نشدهاند نه کامیت، نه جابهجایی شاخه، نه stash؛ دو طرف نشان داده میشود و پایه فقط اگر تنظیمش کنید | هر تعارض با نسخهٔ شما، پایه و طرف دیگر نشان داده میشود؛ zev resolve برای هر فایل یا هر تعارض طرفی را برمیگزیند؛ --keep-conflicts همین حالا کامیت میکند تا بعداً حل کنید، و Zaryn تا آن وقت ادغامش نمیکند. تعارضهای ادغام |
| مخزنی دیگر درون مخزن شما | زیرماژولها: --recursive را فراموش کنید و پوشه خالی است، کد درونش روی HEAD جداشده است و بازبینیها نسخه را نشان نمیدهند | زیرمخزنها: سنجاق فایلی خواناست، clone، checkout و pull آنها را میآورند و بهروز میکنند، و کار درون آنها هرگز زیر پا نمیرود. زیرمخزنها |
| تغییرهای پشتهای | شاخههایی که روی هم ساخته میشوند را خودتان دنبال میکنید؛ هرکدام با دست rebase میشود (--onto، وگرنه کامیتها تکراری میشوند) و مقصد هر درخواست ادغام پس از ادغام با دست عوض میشود | zev stack زنجیره را میشناسد: restack همهٔ شاخهها را یکجا و درست جابهجا میکند، push برای هرکدام درخواست ادغامی روی شاخهٔ زیرین باز میکند، sync پس از ادغامها مرتب میکند. تغییرهای پشتهای |
| مرحلهبندی بخشی از یک فایل | git add -p، فقط تعاملی؛ اسکریپت باید خودش وصله بسازد | zev add -p برای آدمها، و zev add <file> --hunk 2 برای اسکریپتها و عاملها، با همان شمارههایی که zev diff --brief نشان میدهد. دستورها |
| جستوجو در کد | git grep: خطهای جور | zev grep میگوید هر یافته در کدام تابع، کلاس یا سرفصل است، با --at در هر کامیتی جستوجو میکند و بهصورت --json یا --brief پاسخ میدهد. دستورها |
| خروجی برای اسکریپتها و عاملها | --porcelain برای status، رشتههای قالب برای log | --json و --brief روی status، log، diff، show و branch، یا یک بار ZEV_OUTPUT. اسکریپتنویسی و عاملهای هوش مصنوعی |
| جهتیابی | ls، cat README، git log، git status، یکییکی | zev brief پروژه، تغییرهای شما، کامیتهای اخیر، چیدمان، فایلهای پرتغییر و شاخهها را در یک فراخوانی و در بودجهٔ توکن میدهد. zev diff --summary تابعهایی را که هر تغییر لمس کرده نام میبرد. اسکریپتنویسی و عاملهای هوش مصنوعی |
| عاملهای هوش مصنوعی | ابزارهای دیگران | zev mcp مخزنها، تاریخچه، issueها و CI شما را با پاسخهای فشرده به عامل میدهد. اسکریپتنویسی و عاملهای هوش مصنوعی |
| چه چیزی در کد عوض شد | خطهای افزوده و حذفشده | zev sdiff تابعهای افزوده، حذفشده، تغییرنامیافته یا با امضا یا بدنهٔ عوضشده را گزارش میکند (فعلاً برای Zig). مقایسهٔ معنایی |
| تاریخچهٔ مدل و داده | فقط کامیتها | سنجه برای هر کامیت، ارزیابیهایی که اگر امتیاز پایین بیاید درخواست ادغام را نگه میدارند، مجموعهدادهها و تبار. ارزیابیها و تبار |
| کامیتهای آسیبدیده | چیزی درونی ندارد | هشدارها کامیتها را آسیبدیده علامت میزنند و هر چیزی که روی آنها ساخته شده را پیدا میکنند. هشدارها و تبار |
| نشانیدهی باز | اشیا در .git یک مخزن میمانند | کامیتها اشیای IPFS هستند که هر کسی، در Zaryn یا هر جای دیگر، میتواند پیدا و بررسیشان کند. IPLD و منشأ |
zev برای دو جور خواننده ساخته شده است. آدمها جمله، رنگ و دستور بعدی را میگیرند. وقتی چیزی خراب میشود، پیام میگوید چه کنید، نه فقط کد خطا. عاملهای هوش مصنوعی و اسکریپتها همان واقعیتها را به شکل داده میگیرند: --json برای تجزیهٔ دقیق و --brief برای کمترین توکن. داده همیشه روی stdout میرود و متن آدمها روی stderr، پس این دو هرگز قاطی نمیشوند.
zev status # برای شما: چه عوض شده و بعد چه اجرا کنیدzev status --brief # برای یک عامل: "# main"، سپس " M f.txt"ZEV_OUTPUT=json zev log # برای یک اسکریپت: یک سند JSON| در Git مینوشتید | در zev |
|---|---|
git init | zev init |
| یک مخزن Git موجود | zev import-git: همهٔ شاخهها و برچسبها، در همان پوشه (مهاجرت از Git) |
git clone <url> | zev clone owner/name |
git lfs track / git lfs pull | هیچ: فایلهای بزرگ را خود zev تکهتکه و ذخیره میکند |
git commit --amend | zev undo، سپس دوباره کامیت |
git status / git status --porcelain | zev status / zev status --brief |
git add <file> / git add . | zev add <file> / zev add . |
git commit -m "…" | zev commit -m "…" (خودکار امضا میشود) |
git log --oneline | zev log --oneline یا zev log --brief |
git diff / git diff --staged | zev diff / zev diff --staged |
git show <commit> | zev show <commit> |
git branch / git branch <name> / git branch -d <name> | zev branch / zev branch <name> / zev branch -d <name> |
git switch <name> / git switch -c <name> | zev switch <name> / zev switch -c <name> |
git merge <branch> | zev merge <branch> |
git rebase <branch> | zev rebase <branch> |
git rebase --onto <new> <old> | zev rebase <new> --since <old>، یا برای زنجیرهای از شاخهها zev stack restack |
git diff --name-only --diff-filter=U | zev conflicts (همراه با طرفهای هر تعارض) |
git checkout --ours <file> / --theirs | zev resolve <file> --ours / --theirs (یا --hunk N برای یک تعارض) |
git add -p | zev add -p، یا zev add <file> --hunk 1,3 بیپرسش |
git mv <from> <to> | zev mv <from> <to> |
git grep <pattern> | zev grep <pattern>، همراه با تابعی که هر یافته در آن است |
git submodule add <url> <path> | zev sub add <address> <folder> |
git submodule update --init --recursive | هیچ: clone، checkout و pull انجامش میدهند (با دست: zev sub update) |
git cherry-pick <commit> | zev cherry-pick <commit> |
git stash / git stash pop | zev stash / zev stash pop |
git tag <name> | zev tag <name> |
git restore <file> / git restore --staged <file> | zev restore <file> / zev restore --staged <file> |
git rm <file> | zev rm <file> |
git blame <file> | zev blame <file> |
git bisect | zev bisect |
git remote add origin <url> | zev remote add origin <url> |
git push / git pull | zev push / zev pull |
git verify-commit <commit> | zev verify <commit> |
git diff --stat | zev diff --summary (با تابعهای لمسشده) |
git reset --soft HEAD~1 | zev undo |
git reflog | zev op log |
git reset --hard HEAD@{n} | zev op restore <n> |
در جدول نیست؟ با zev در جلویش تایپش کنید: zev git <your git command> شکل zev را میگوید و اجرایش میکند (-n فقط میگوید). همچنان Git تایپ کنید.
به کامیتها و شاخهها به همان شکل اشاره میشود: یک هش یا پیشوندی از آن، نام شاخه یا برچسب، HEAD، HEAD~2، main^.
مقایسهٔ منصفانه از هر دو سو است.
| Git | در zev |
|---|---|
| کامیتهای ادغام با دو والد | تاریخچه خطی میماند: zev merge کامیتهای شما را روی شاخهٔ دیگر بازپخش میکند، مثل git pull --rebase |
git worktree، checkout پراکنده و کمعمق | هنوز نه |
| همهٔ میزبانها و ابزارهای دنیا با آن حرف میزنند | zev با Zaryn و هر سرور zev حرف میزند؛ zev import-git مخزن Git را میآورد |
zev نمیخواهد در هر موردی برنده باشد. اگر پروژهٔ شما باید روی میزبانی باشد که فقط Git میفهمد یا ابزارهایش به .git وصلاند، یا اگر هیچکدام از چیزهای جدولهای بالا برایتان مهم نیست، Git بهخوبی به کارتان میآید. zev برای تیمهایی است که میخواهند برگرداندن، تعارضهایی که متوقفشان نمیکند، بازبینی پشتهای، فایلهای بزرگ، امضا و عاملهای هوش مصنوعی بی سرهمکردن ابزارهای اضافه کار کنند.
zev import-git کل تاریخچهٔ یک مخزن Git را در همان پوشه به zev میآورد و .git همانطور که بود میماند، پس تا وقتی جابهجا میشوید میتوانید از هر دو استفاده کنید. مهاجرت از Git.
بعدی: مهاجرت از Git، اولین مخزن شما، قدم به قدم، یا اگر شاخه و ادغام برایتان تازه است کنترل نسخه به زبان تصویر.