# شروع کار با میزبانی کد

> مسیری راهنما از نخستین مخزن تا تاریخچه‌ای امضاشده و اثبات‌پذیر: میزبانی کد چیست، zev و Zaryn چطور کار می‌کنند، چرخهٔ روزمره، شاخه‌ها و درخواست‌های ادغام، پیدا کردن و برگرداندن چیزها، و امکانات پیشرفته. اول تصویر، هر گام با توضیح.

Source: https://zaryn.xyz/docs/fa/get-started-code

این آموزش از «میزبانی کد چیست؟» تا تاریخچه‌ای امضاشده و اثبات‌پذیر پیش می‌رود. اگر کنترل نسخه برایتان کاملاً تازه است، اول [کنترل نسخه به زبان تصویر](/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).
