jj-git-push(1) General Commands Manual jj-git-push(1)

jj-git-push - ارسال (push) به یک ریموت Git

jj git push [-R|--repository] [--remote] [-b|--bookmark] [--ignore-working-copy] [--no-integrate-operation] [-t|--tag] [--all] [--ignore-immutable] [--at-operation] [--tracked] [--debug] [--deleted] [--allow-empty-description] [--color] [--allow-private] [--quiet] [--allow-conflicts] [--no-pager] [--config] [-r|--revision] [-c|--change] [--config-file] [--named] [--dry-run] [-o|--option] [-h|--help]

ارسال (push) به یک ریموت Git

به‌طور پیش‌فرض، بوک‌مارک‌های در حال ردگیری و تگ‌های اشاره‌کننده به `remote_bookmarks(remote=<remote>)..@` را ارسال می‌کند. از `--bookmark`/`--tag` برای ارسال بوک‌مارک‌ها یا تگ‌های خاص استفاده کنید. از `--all` برای ارسال همه بوک‌مارک‌ها و تگ‌ها استفاده کنید. از `--change` برای تولید نام‌های بوک‌مارک بر اساس شناسه تغییر (change ID) کامیت‌های مشخص استفاده کنید.

هنگام ارسال یک بوک‌مارک یا تگ، دستور تمام کامیت‌های موجود در بازه از موقعیت فعلی ریموت تا و شامل کامیت هدف آن را ارسال می‌کند. هیچ‌یک از کامیت‌های نواده فراتر از این مرجع ارسال نمی‌شوند.

اگر مرجع محلی نسبت به آخرین واکشی (fetch) تغییر کرده باشد، عملیات ارسال پس از گذراندن بررسی‌های ایمنی، مرجع ریموت را به موقعیت جدید به‌روزرسانی می‌کند. این رفتار مشابه `git push --force-with-lease` است - ریموت تنها در صورتی به‌روزرسانی می‌شود که وضعیت فعلی آن با آنچه Jujutsu در آخرین بار واکشی کرده مطابقت داشته باشد.

برخلاف Git، ریموت مقصد ارسال از بوک‌مارک‌های ریموتِ ردگیری‌شده مشتق نمی‌شود. برای انتخاب مخزن ریموت Git بر اساس نام، از `--remote` استفاده کنید. گزینه‌ای برای ارسال به چندین ریموت وجود ندارد.

پیش از آنکه دستور عملاً یک بوک‌مارک ریموت را جابه‌جا کند، بسازد، یا حذف نماید، چندین بررسی ایمنی [safety checks] را انجام می‌دهد. اگر مشکلی وجود داشته باشد، ممکن است نیاز به اجرای `jj git fetch --remote <remote name>` و/یا رفع برخی تداخل‌های بوک‌مارک [bookmark conflicts] داشته باشید.

[safety checks]: https://docs.jj-vcs.dev/latest/bookmarks/#pushing-bookmarks-safety-checks

[bookmark conflicts]: https://docs.jj-vcs.dev/latest/bookmarks/#conflicts

ریموت مقصد برای ارسال (تنها ریموت‌های نام‌گذاری‌شده پشتیبانی می‌شوند)

این گزینه به‌طور پیش‌فرض از تنظیم `git.push` استفاده می‌کند. اگر این تنظیم پیکربندی نشده باشد و چندین ریموت وجود داشته باشد، از ریموت به نام "origin" استفاده خواهد شد.

ارسال تنها این بوک‌مارک، یا بوک‌مارک‌های منطبق با یک الگو (قابلیت تکرار دارد)

اگر بوک‌مارکی هنوز چیزی را ردگیری نمی‌کند، بوک‌مارک ریموت به‌طور خودکار ردگیری خواهد شد.

به‌طور پیش‌فرض، الگوی مشخص‌شده نام‌های بوک‌مارک را با نحو glob مطابقت می‌دهد. همچنین می‌توانید از سایر نحوهای الگوی رشته‌ای [string pattern syntax] استفاده کنید.

[string pattern syntax]: https://docs.jj-vcs.dev/latest/revsets/#string-patterns

ارسال تنها این تگ، یا تگ‌های منطبق با یک الگو (قابلیت تکرار دارد)

اگر تگی هنوز چیزی را ردگیری نمی‌کند، تگ ریموت به‌طور خودکار ردگیری خواهد شد.

به‌طور پیش‌فرض، الگوی مشخص‌شده نام‌های تگ را با نحو glob مطابقت می‌دهد. همچنین می‌توانید از سایر نحوهای الگوی رشته‌ای [string pattern syntax] استفاده کنید.

[string pattern syntax]: https://docs.jj-vcs.dev/latest/revsets/#string-patterns

ارسال تمام بوک‌مارک‌ها و تگ‌ها (شامل موارد جدید)
ارسال تمام بوک‌مارک‌ها و تگ‌های ردگیری‌شده

این حالت معمولاً بدان معناست که بوک‌مارک یا تگ قبلاً به ریموت مربوطه [relevant remote] ارسال شده یا از آن واکشی شده است.

[relevant remote]: https://docs.jj-vcs.dev/latest/bookmarks#remotes-and-tracked-bookmarks

ارسال تمام بوک‌مارک‌ها و تگ‌های حذف‌شده

تنها بوک‌مارک‌ها و تگ‌های ردگیری‌شده را می‌توان با موفقیت در ریموت حذف کرد. اگر هر بوک‌مارک یا تگ ردگیری‌نشده‌ای در ریموت متناظر با بوک‌مارک‌ها یا تگ‌های محلیِ ناموجود باشد، هشداری چاپ خواهد شد.

اجازه ارسال کامیت‌ها با توضیحات خالی
اجازه ارسال کامیت‌های خصوصی (private)

مجموعه کامیت‌های خصوصی را می‌توان با تنظیم `git.private-commits` پیکربندی کرد. مقدار پیش‌فرض `none()` است، به این معنی که تمام کامیت‌ها واجد شرایط ارسال هستند.

اجازه ارسال کامیت‌های حاوی تداخل
ارسال بوک‌مارک‌ها و تگ‌های اشاره‌کننده به این کامیت‌ها (قابلیت تکرار دارد)
ارسال این کامیت با ایجاد یک بوک‌مارک (قابلیت تکرار دارد)

بوک‌مارک ایجادشده به‌طور خودکار ردگیری خواهد شد. از تنظیم `templates.git_push_bookmark` برای سفارشی‌سازی نام بوک‌مارک تولیدشده استفاده کنید. مقدار پیش‌فرض `"push-" ++ change_id.short()` است.

تعیین یک نام بوک‌مارک جدید و یک بازنگری برای ارسال با آن نام، مانند '--named myfeature=@'

در صورت جدید بودن بوک‌مارک، آن را به‌طور خودکار ردگیری می‌کند.

تنها نمایش آنچه در ریموت تغییر خواهد کرد
گزینه‌های ارسال Git
چاپ راهنما (مشاهده خلاصه با '-h')

مسیر مخزنی که عملیات روی آن انجام می‌شود

به‌طور پیش‌فرض، Jujutsu به دنبال نزدیک‌ترین دایرکتوری .jj/ در اجداد دایرکتوری کاری فعلی می‌گردد.

از رونوشت کاری اسنپ‌شات گرفته نشود و آن را به‌روزرسانی نکند

به‌طور پیش‌فرض، Jujutsu در آغاز هر دستور از رونوشت کاری اسنپ‌شات می‌گیرد. همچنین در پایان دستور، در صورتی که کامیت رونوشت کاری (`@`) توسط دستور تغییر یافته باشد، رونوشت کاری به‌روزرسانی می‌شود. اگر می‌خواهید از اسنپ‌شات گرفتن از رونوشت کاری صرف‌نظر کنید و در عوض یک کامیت رونوشت کاری احتمالاً قدیمی را مشاهده نمایید، می‌توانید از `--ignore-working-copy` استفاده کنید. این گزینه برای مثال در اعلان خط فرمان (prompt) مفید است، به‌ویژه اگر فرآیند دیگری داشته باشید که کامیت‌های رونوشت کاری را ثبت می‌کند.

بارگذاری مخزن در یک عملیات خاص با `--at-operation` به‌طور ضمنی `--ignore-working-copy` را اعمال می‌کند.

اجرای دستور طبق معمول بدون ادغام هیچ عملیاتی

هنگامی که این گزینه مشخص شود، عملیات همچنان طبق معمول ایجاد خواهند شد اما در تاریخچهٔ عملیات (operation log) ادغام نمی‌شوند. همچنین رونوشت کاری نیز به‌روزرسانی نخواهد شد.

دستور، شناسهٔ عملیات حاصل را چاپ خواهد کرد. می‌توانید آن را برای مثال به `jj --at-op` ارسال کنید تا وضعیت به‌دست‌آمدهٔ مخزن را بررسی نمایید، یا آن را به `jj op restore` بدهید تا مخزن به آن وضعیت بازگردانده شود. همچنین می‌توانید شناسه را به `jj op integrate` بدهید تا عملیات ادغام شود.

توجه داشته باشید که این کار مانع اثرات جانبی بیرون از مخزن *نمی‌شود*. برای نمونه، `jj git push --no-integrate-operation` همچنان عملیات ارسال (push) را انجام خواهد داد.

اجازه بازنویسی کامیت‌های تغییرناپذیر

به‌طور پیش‌فرض، Jujutsu از بازنویسی کامیت‌ها در مجموعه پیکربندی‌شدهٔ کامیت‌های تغییرناپذیر جلوگیری می‌کند. این گزینه بررسی مذکور را غیرفعال کرده و اجازه می‌دهد هر کامیتی به‌جز کامیت ریشه (root commit) را بازنویسی کنید.

این گزینه تنها بر این بررسی تأثیر می‌گذارد و روی مجموعه بازنگری `immutable_heads()` یا کلمه کلیدی قالب `immutable` اثری ندارد.

عملیاتی که مخزن باید در نقطهٔ آن بارگذاری شود

عملیاتی که مخزن باید در نقطهٔ آن بارگذاری شود. به‌طور پیش‌فرض، Jujutsu مخزن را در تازه‌ترین عملیات، یا در صورت وجود عملیات‌های واگرا، در نقطهٔ ادغام آن‌ها بارگذاری می‌کند.

می‌توانید از `--at-op=<operation ID>;` استفاده کنید تا ببینید مخزن در یک عملیات پیشین چگونه بوده است. برای نمونه `jj --at-op=<operation ID>; st` آنچه را که `jj st` در زمان پایان یافتن آن عملیات نشان می‌داد به شما نمایش می‌دهد. `--at-op=@` تقریباً همانند حالت پیش‌فرض است، با این تفاوت که عملیات‌های واگرا هرگز ادغام نخواهند شد.

از دستور `jj op log` برای یافتن شناسهٔ عملیات دلخواه خود استفاده کنید. هر پیشوند یکتایی از شناسهٔ عملیات کافی خواهد بود.

هنگام بارگذاری مخزن در یک عملیات پیشین، رونوشت کاری نادیده گرفته می‌شود، درست مانند اینکه `--ignore-working-copy` مشخص شده باشد.

امکان اجرای دستورات تغییردهنده (mutating) هنگام بارگذاری مخزن در یک عملیات پیشین وجود دارد. انجام این کار معادل اجرای همزمان دستورات با شروع از عملیات پیشین است. به‌ندرت دلیلی برای انجام چنین کاری وجود دارد، اما امکان‌پذیر است.

فعال‌سازی ثبت وقایع اشکال‌زدایی (debug logging)
تعیین زمان استفاده از رنگ در خروجی

مقادیر ممکن:

  • always
  • never
  • debug
  • auto
بی‌صدا کردن خروجی‌های غیراصلی دستور

برای نمونه، `jj file list` همچنان فایل‌ها را فهرست می‌کند، اما به شما اطلاع نمی‌دهد که آیا از رونوشت کاری اسنپ‌شات گرفته شده یا نوادگان بازپایه‌ریزی شده‌اند یا خیر.

هشدارها و خطاها همچنان چاپ خواهند شد.

غیرفعال کردن صفحه‌بندی‌کننده (pager)
گزینه‌های پیکربندی اضافی (قابلیت تکرار دارد)

نام باید به‌صورت کلیدهای نقطه‌دار TOML مشخص شود. مقدار باید به‌صورت یک عبارت TOML تعیین شود. در صورتی که مقدار رشته‌ای درون ساختارهای TOML (مانند نشانه‌گذاری آرایه) محصور نشده باشد، می‌توان از علامت‌های نقل‌قول صرف‌نظر کرد.

فایل‌های پیکربندی اضافی (قابلیت تکرار دارد)
push