مسیری راهنما از نخستین مخزن تا تاریخچهای امضاشده و اثباتپذیر: میزبانی کد چیست، zev و Zaryn چطور کار میکنند، چرخهٔ روزمره، شاخهها و درخواستهای ادغام، پیدا کردن و برگرداندن چیزها، و امکانات پیشرفته. اول تصویر، هر گام با توضیح.
آموزش⏱ حدود ۴۰ دقیقه◔ از صفر تا پیشرفته☰ ۱۶ فصل
یاد میگیرید
✓میزبانی کد چیست و چه چیزی zev را از دیگر ابزارهای کنترل نسخه جدا میکند
✓نصب zev، ورود، و گذاشتن یک پروژه روی Zaryn
✓چرخهٔ روزمره: دریافت، تغییر، کامیت، ارسال
✓شاخهها، درخواستهای ادغام، بازبینی، issueها و سازمانها
✓پیدا کردن هر چیزی در تاریخچه و برگرداندن بیخطر اشتباهها
✓فایلهای بزرگ، اثباتهایی که هر کسی میتواند بسنجد، رمزگذاری و خودکارسازی
لازم دارید
•یک حساب Zaryn (رایگان)
•یک رایانه با لینوکس، macOS یا ویندوز
•پوشهای با چیزی که ارزش نگه داشتن دارد: کد، یک پایاننامه، یک وبسایت
این آموزش از «میزبانی کد چیست؟» تا تاریخچهای امضاشده و اثباتپذیر پیش میرود. اگر کنترل نسخه برایتان کاملاً تازه است، اول [کنترل نسخه به زبان تصویر](/docs/fa/version-control-in-pictures) را بخوانید: کامیت، شاخه و ادغام را در ده دقیقه با تصویر توضیح میدهد.
## ۱. میزبانی کد چیست
```diagram
type: graph
title: یک پروژه، نسخهٔ هر کس، یک جا در میان
alt: رایانهٔ شما و همتیمی هر کدام کل تاریخچه را دارند؛ Zaryn نسخهٔ مشترک را با درخواست ادغام، issue و CI نگه میدارد
legend: path=ارسال و دریافت
height: 40
---
node you | رایانهٔ شما | 12 20 | laptop | accent | کل تاریخچه، آفلاین: کامیت، شاخه، نگاه به گذشته بی اینترنت
node z | Zaryn | 50 20 | cloud | good | نسخهٔ مشترک و هر چه دورش است: درخواست ادغام، issue، CI، وبسایت
node mate | همتیمی | 88 20 | laptop | | نسخهٔ کامل خودش
link you z | push، pull | path
link z mate | pull، push | path
```
**کنترل نسخه** هر نسخهای از پروژه را که ذخیره کنید به یاد میسپارد تا ببینید چه عوض شد، برگردید و با دیگران کار کنید. **میزبانی کد** یک نسخهٔ مشترک را آنلاین میگذارد تا تیم، CI و هر کسی که بخواهید به آن برسد. **zev** ابزار کنترل نسخه روی رایانهٔ شماست؛ **Zaryn** جایی است که نسخهٔ مشترک در آن است.
## ۲. چه چیزی zev را متفاوت میکند
```diagram
type: cards
---
#️⃣ | نشانیدهی با محتوا | هر فایل، پوشه و کامیت با هش محتوایش نام میگیرد: یک بایت را عوض کنید، نامش عوض میشود | accent
✍ | امضاشده | zev هر کامیت تازه را روی رایانهٔ شما امضا میکند؛ وقتی کلید روی حساب شما باشد Zaryn آن را تأییدشده نشان میدهد |
🧱 | فایل بزرگ، انتقال کوچک | فایلهای بزرگ تکهتکه میشوند؛ یک ویرایش فقط تکههای عوضشده را میفرستد | good
🌐 | باز از بنیاد | اشیا، اشیای IPFSاند: یک snapshot منتشرشده هر جایی باز میشود، نه فقط روی Zaryn |
🧠 | کد را میفهمد | دیف معنایی میگوید تابعی تغییر نام داده، نه «۲۰ خط عوض شد» |
🤖 | آماده برای عاملها | هر فرمان حالت JSON دارد؛ عاملهای هوش مصنوعی از راه `zev mcp` کار میکنند |
```
معنایش برای شما: هیچکس، از جمله Zaryn، نمیتواند تاریخچهتان را بیصدا عوض کند، و هر کسی بینیاز از اعتماد به ما میتواند این را بسنجد.
## ۳. آنچه رایگان است
```diagram
type: stats
title: طرح رایگان
---
∞ | مخزن عمومی | هر کسی میتواند بخواند | |
5 | مخزن خصوصی | فقط شما و کسانی که دعوت میکنید | | accent
2 GB | در مجموع | در همهٔ مخزنهایتان | |
250 MB | برای هر فایل | فایلهای بزرگتر به هر حال تکهتکه میشوند | |
```
بعدها مخزن خصوصی، فضا یا امکانات پریمیوم بیشتری لازم دارید؟ [طرحها](/docs/fa/billing-and-credits) را ببینید.
## ۴. zev را نصب کنید و وارد شوید
```diagram
type: flow
title: پنج دقیقه، یک بار برای هر رایانه
or: یا
---
نصب | یک خط روی لینوکس یا macOS؛ یکی روی ویندوز | | ⬇
~ zev login
تازه به Zaryn آمدهاید | `--register you --email …`، سپس کد ایمیلشده | accent | ✉
? حساب دارید | `--device`: در مرورگر تأیید کنید
~ تمام
وارد شدید | از این پس هر فرمان zev میداند شما کیستید | good | ✓
```
```bash
curl -fsSL https://zaryn.xyz/install.sh | sh # Linux and macOS
zev login zaryn.xyz --register your-name --email you@example.com
```
روی ویندوز: `irm https://zaryn.xyz/install.ps1 | iex`. مدیرهای بسته و بررسی دانلود: [نصب](/docs/fa/installation).
## ۵. نخستین مخزن شما
```diagram
type: flow
title: از یک پوشه تا یک مخزن روی Zaryn
---
zev init | پوشهٔ شما شروع به نگه داشتن تاریخچه میکند | | 📁
~ zev add، zev commit
نخستین کامیت | یک نقطهٔ ذخیره با یک پیام | accent | ✓
~ zev new
روی Zaryn | نام، نوع، عمومی یا خصوصی، مجوز؛ `origin` تنظیمشده | | ☁
~ zev push
آنلاین | `zaryn.xyz/you/notes`، با همهٔ نسخهها | good | 🌐
```
```bash
cd notes
zev init
zev add .
zev commit -m "Start my notes"
zev new # asks for a name, public or private, a licence
zev push
```
ترمینال ندارید؟ در [Repos](/repos)، **New repository** را بزنید و با **Upload** فایلها را از مرورگر اضافه کنید. هر فرمان بالا در [نخستین مخزن شما](/docs/fa/first-repository) توضیح داده شده است.
## ۶. چرخهٔ روزمره
```diagram
type: flow
title: چرخهای که هر روز تکرار میکنید
loop: دریافت، تغییر، add، کامیت، ارسال
---
zev pull | اول آخرین کار همه را بگیرید | | ⇣
~ ویرایش فایلها
zev add | آنچه در نقطهٔ ذخیرهٔ بعدی میرود را برگزینید | | 📥
~ zev commit
کامیت | یک نقطهٔ ذخیره، با اینکه چه کردید و چرا | accent | ✓
~ zev pull، سپس zev push
همرسانیشده | کار شما روی کار همه | good | ⇡
```
`zev status` هر لحظه میگوید هر چیز کجاست و `zev diff` خطهایی را که عوض کردهاید نشان میدهد. پیش از push، pull کنید: اگر همتیمیای در این میان push کرده باشد، کار شما روی کار او مینشیند. [ارسال و دریافت، با تصویر](/docs/fa/pushing-and-pulling#روال-کار-تیمی).
## ۷. شاخهها: بیخطر امتحان کنید
```diagram
type: history
title: یک شاخه برای هر کار
start: main
---
branch main | accent
branch login-fix | good | from B
commit A main | شروع
commit B main | افزودن منو
step zev checkout -b login-fix | یک خط کاری تازه. main دقیقاً همانطور که بود میماند.
step کامیت روی شاخه | دو کامیت، فقط روی login-fix.
commit C login-fix | درست کردن دکمه
commit D login-fix | افزودن آزمون
step در همین حال روی main | دیگران روی main کار میکنند.
commit E main | بهروزرسانی پاورقی
```
```bash
zev checkout -b login-fix # make a branch and switch to it
zev checkout main # back to main
```
شاخه فقط نامی است که به یک کامیت اشاره میکند، پس هزینهای ندارد. یک شاخه برای هر تغییر، main را سالم نگه میدارد. [شاخهها و ادغام](/docs/fa/branches).
## ۸. درخواستهای ادغام و بازبینی
```diagram
type: flow
title: پیش از ادغام بپرسید
or: یا
---
ارسال شاخه | `zev push`: login-fix روی Zaryn است | | ⑂
~ zev pr
درخواست ادغام | عنوان و توضیح از روی کامیتهایتان پیشنویس میشود | accent | 📬
~ بازبینی
بازبینی | نظر روی هر خط؛ تأیید، یا درخواست تغییر | warn | 👀
? تغییر خواستند | کامیتهای بیشتری push کنید، درخواست خودش بهروز میشود
~ بررسیها موفق
ادغامشده | در وبسایت، یا `zev pr merge 7` | good | ✓
```
```bash
zev pr # opens a pull request from the branch you're on
zev pr list # what's open
zev pr merge 7 # merge it once it's approved
```
یک درخواست ادغام دیف را نشان میدهد، [CI](/docs/fa/get-started-ci) و [ارزیابیها](/docs/fa/evals-and-lineage) را اجرا میکند و فقط وقتی ادغام میشود که درخواست تغییر بازی نمانده باشد. [همکاری از ترمینال](/docs/fa/cli-collaboration).
## ۹. issueها، همکاران و سازمانها
```diagram
type: cards
---
🐞 | Issueها | گزارش باگ یا پیشنهاد ایده: زبانهٔ Issues، یا `zev issue` | accent
🤝 | همکاران | دعوت کسی به یک مخزن: بازش کنید، سپس Collaborators |
🏢 | سازمانها | یک تیم زیر یک نام، با مخزنها و نقشهای خودش | good
🍴 | فورکها | نسخهٔ خودتان از پروژهٔ کس دیگر: `zev fork-repo`، سپس یک درخواست ادغام به عقب |
```
## ۱۰. وقتی هر دو همان خطها را عوض کردهاند
```diagram
type: diff
title: یک تعارض، آنطور که zev علامت میزند
file: index.html
---
<h1>
+ <<<<<<< main
+ Welcome to my site
+ =======
+ Welcome! Search below
+ >>>>>>> login-fix
> نسخهٔ main بالا، نسخهٔ شاخه پایین: یکی، دیگری یا ترکیبی را نگه دارید، سپس خطهای علامت را پاک کنید
</h1>
```
ادغام معمولاً خودش کار میکند. وقتی دو نفر همان خطها را عوض کرده باشند، zev چیزی را تغییر نمیدهد و از شما میپرسد:
```bash
zev merge login-fix --resolve # marks each place both sides changed
# edit the files, keep what you want, remove the marker lines
zev add index.html
zev merge --continue # or zev merge --abort to go back
```
گام به گام: [وقتی هر دو طرف همان خطها را تغییر دادهاند](/docs/fa/branches#وقتی-هر-دو-طرف-همان-خطها-را-تغییر-دادهاند).
## ۱۱. هر چیزی را در تاریخچه پیدا کنید
```diagram
type: cards
title: شش راه برای نگاه به گذشته
---
📜 | zev log | هر کامیت، تازهترین اول؛ `--oneline` برای هر کدام یک خط |
🔍 | zev show | یک کامیت و دقیقاً آنچه عوض کرد | accent
🧑💻 | zev blame | چه کسی آخرین بار هر خط یک فایل را عوض کرد، و در کدام کامیت |
⚖ | zev diff، zev compare | هر دو نسخه کنار هم |
🔎 | zev search | کامیتها، آزمایشها، سنجهها و snapshotها |
🌐 | صفحهٔ Commits | کل تاریخچه را با نام کسی، نوع (feat، fix…) یا واژهها فیلتر کنید | good
```
```bash
zev log --oneline
zev blame src/login.js
zev show HEAD~1
```
## ۱۲. اشتباهها را بیخطر برگردانید
```diagram
type: cards
title: چهار برگرداندنی که واقعاً به کار میبرید
---
↩ | دور ریختن ویرایشهای یک فایل | `zev restore file`: بازگشت به آخرین کامیت (آن ویرایشها از دست میروند) | warn
📤 | بیرون آوردن فایل از کامیت بعدی | `zev restore --staged file`: ویرایشهایتان میمانند |
🧺 | کنار گذاشتن تغییرها | `zev stash`، بعداً `zev stash pop` | good
➕ | برگرداندن یک کامیت | کامیت تازهای که آن را برمیگرداند: تاریخچه صادق میماند | accent
```
zev هرگز کامیتهایی را که ساختهاید بازنویسی نمیکند، پس یک برگرداندن نمیتواند کار کس دیگری را نابود کند. پاسخ هر موقعیت: [چطور…؟](/docs/fa/how-do-i#برگرداندن).
## ۱۳. فایلهای بزرگ و مدلها
```diagram
type: stats
title: ویرایشی نزدیک آغاز یک فایل ۱٫۷ مگابایتی
---
~1% | از تکههایش دوباره فرستاده شد | بقیه از پیش در هر دو طرف بودند | 1 | good
2 | فایل یکسان | یک بار ذخیره میشوند: محتوای یکسان، نام یکسان | | accent
```
zev فایلهای بزرگ را بر اساس محتوایشان تکهتکه میکند، پس یک ویرایش فقط تکههای اطرافش را میفرستد، چه در push چه در pull. داده، وزنهای مدل و رسانه کنار کد میمانند، بینیاز از ابزار جداگانه برای فایلهای بزرگ. [تکهبندی وابسته به محتوا](/docs/fa/chunking).
## ۱۴. اثباتش کنید: تاریخچهای که هر کسی میتواند بسنجد
```diagram
type: flow
title: اعتماد کن، ولی بسنج
---
امضاشده | هر کامیت تازه، روی رایانهٔ شما؛ یک بار `zev signing-key add` تا Zaryn آنها را تأییدشده نشان دهد | | ✍
~ zev verify-storage
ذخیرهشده | اثبات رمزنگاشتی که Zaryn واقعاً هر چه push کردید را نگه میدارد | accent | 🧾
~ zev notarize
ثبتشده | هش یک کامیت روی یک بلاکچین عمومی: اثبات اینکه آن زمان وجود داشت | good | ⛓
```
```bash
zev signing-key add # یک بار: کامیتهای امضاشدهتان تأییدشده نشان داده میشوند
zev verify-storage # does Zaryn really hold my last push?
zev notarize commit <id> # public proof this commit existed today
zev audit # the repository's full provenance report
```
[کامیتهای امضاشده](/docs/fa/signed-commits) و [ذخیرهسازی بررسیپذیر](/docs/fa/verified-storage) اثباتها را توضیح میدهند.
## ۱۵. خصوصی، و رمزشده
```diagram
type: flow
title: رمزشده پیش از بیرون رفتن از رایانهٔ شما
---
مخزن خصوصی | فقط شما و کسانی که دعوت میکنید | | 🔒
~ zev encrypt on
رمزشده | محتوای فایلها با کلیدی قفل میشود که فقط دستگاههای شما دارند | accent | 🔐
~ zev encrypt share
همتیمیها | هر یک از دستگاههایشان کلید را میگیرد | good | 🤝
```
برای کاری که باید حتی از میزبان هم خصوصی بماند، رمزگذاری را پیش از نخستین push روشن کنید. آنوقت Zaryn چیزی را نگه میدارد که نمیتواند بخواند. [مخزنهای رمزشده](/docs/fa/encrypted-repositories).
## ۱۶. خودکارش کنید
```diagram
type: cards
---
▶ | CI | هر push در کانتینری قفلشده ساخته و آزموده میشود: `zev ci enable` | accent
📈 | ارزیابیها | درخواست ادغامی که بنچمارک یا باندلی را بدتر کند ادغام نمیشود | good
🤖 | عاملهای هوش مصنوعی | عامل را از راه خودتان وارد کنید و `zev mcp` را به آن بدهید |
🧾 | اسکریپتها | `--json` روی هر فرمان، داده روی stdout، کدهای خروج معنادار |
```
از نخستین مخزن تا تاریخچهای اثباتپذیر و خودکار آمدید. بعد: [شروع کار با CI](/docs/fa/get-started-ci)، [چطور…؟](/docs/fa/how-do-i) برای پاسخهای کوتاه، و [اسکریپتنویسی و عاملهای هوش مصنوعی](/docs/fa/automation-and-agents).
این آموزش از «میزبانی کد چیست؟» تا تاریخچهای امضاشده و اثباتپذیر پیش میرود. اگر کنترل نسخه برایتان کاملاً تازه است، اول کنترل نسخه به زبان تصویر را بخوانید: کامیت، شاخه و ادغام را در ده دقیقه با تصویر توضیح میدهد.
کنترل نسخه هر نسخهای از پروژه را که ذخیره کنید به یاد میسپارد تا ببینید چه عوض شد، برگردید و با دیگران کار کنید. میزبانی کد یک نسخهٔ مشترک را آنلاین میگذارد تا تیم، CI و هر کسی که بخواهید به آن برسد. zev ابزار کنترل نسخه روی رایانهٔ شماست؛ Zaryn جایی است که نسخهٔ مشترک در آن است.
zev status هر لحظه میگوید هر چیز کجاست و zev diff خطهایی را که عوض کردهاید نشان میدهد. پیش از push، pull کنید: اگر همتیمیای در این میان push کرده باشد، کار شما روی کار او مینشیند. ارسال و دریافت، با تصویر.
↳نسخهٔ main بالا، نسخهٔ شاخه پایین: یکی، دیگری یا ترکیبی را نگه دارید، سپس خطهای علامت را پاک کنید
27</h1>
ادغام معمولاً خودش کار میکند. وقتی دو نفر همان خطها را عوض کرده باشند، zev چیزی را تغییر نمیدهد و از شما میپرسد:
Terminal
zev merge login-fix --resolve # marks each place both sides changed# edit the files, keep what you want, remove the marker lineszev add index.htmlzev merge --continue # or zev merge --abort to go back
zev فایلهای بزرگ را بر اساس محتوایشان تکهتکه میکند، پس یک ویرایش فقط تکههای اطرافش را میفرستد، چه در push چه در pull. داده، وزنهای مدل و رسانه کنار کد میمانند، بینیاز از ابزار جداگانه برای فایلهای بزرگ. تکهبندی وابسته به محتوا.
هر کامیت تازه، روی رایانهٔ شما؛ یک بار zev signing-key add تا Zaryn آنها را تأییدشده نشان دهد
zev verify-storage
🧾
ذخیرهشده
اثبات رمزنگاشتی که Zaryn واقعاً هر چه push کردید را نگه میدارد
zev notarize
⛓
ثبتشده
هش یک کامیت روی یک بلاکچین عمومی: اثبات اینکه آن زمان وجود داشت
Terminal
zev signing-key add # یک بار: کامیتهای امضاشدهتان تأییدشده نشان داده میشوندzev verify-storage # does Zaryn really hold my last push?zev notarize commit <id> # public proof this commit existed todayzev audit # the repository's full provenance report
محتوای فایلها با کلیدی قفل میشود که فقط دستگاههای شما دارند
zev encrypt share
🤝
همتیمیها
هر یک از دستگاههایشان کلید را میگیرد
برای کاری که باید حتی از میزبان هم خصوصی بماند، رمزگذاری را پیش از نخستین push روشن کنید. آنوقت Zaryn چیزی را نگه میدارد که نمیتواند بخواند. مخزنهای رمزشده.