'\" t .\" Title: git-worktree .\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author] .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 2026-06-29 .\" Manual: Git Manual .\" Source: Git 2.55.0 .\" Language: English .\" .TH "GIT\-WORKTREE" "1" "2026\-06\-29" "Git 2\&.55\&.0" "Git Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "نام (NAME)" git-worktree \- مدیریت چندین درخت کاری .SH "خلاصه دستور (SYNOPSIS)" .sp .nf \fBgit\fR \fBworktree\fR \fBadd\fR [\fB\-f\fR] [\fB\-\-detach\fR] [\fB\-\-checkout\fR] [\fB\-\-lock\fR [\fB\-\-reason\fR \fI\fR]] [\fB\-\-orphan\fR] [(\fB\-b\fR | \fB\-B\fR) \fI\fR] \fI\fR [\fI\fR] \fBgit\fR \fBworktree\fR \fBlist\fR [\fB\-v\fR | \fB\-\-porcelain\fR [\fB\-z\fR]] \fBgit\fR \fBworktree\fR \fBlock\fR [\fB\-\-reason\fR \fI\fR] \fI\fR \fBgit\fR \fBworktree\fR \fBmove\fR \fI\fR \fI\fR \fBgit\fR \fBworktree\fR \fBprune\fR [\fB\-n\fR] [\fB\-v\fR] [\fB\-\-expire\fR \fI\fR] \fBgit\fR \fBworktree\fR \fBremove\fR [\fB\-f\fR] \fI\fR \fBgit\fR \fBworktree\fR \fBrepair\fR [\fI\fR\&...] \fBgit\fR \fBworktree\fR \fBunlock\fR \fI\fR .fi .sp .SH "توضیحات (DESCRIPTION)" .sp مدیریت چندین درخت کاری متصل به یک مخزن مشترک\&. .sp یک مخزن گیت می‌تواند از چندین درخت کاری پشتیبانی کند و به شما اجازه می‌دهد بیش از یک شاخه را به طور هم‌زمان دریافت و بازبینی (checkout) کنید\&. با دستور \fBgit\fR \fBworktree\fR \fBadd\fR یک درخت کاری جدید با مخزن مرتبط می‌شود، همراه با فراداده‌های اضافی که آن درخت کاری را از بقیه درخت‌های کاری موجود در همان مخزن متمایز می‌کند\&. درخت کاری همراه با این فراداده‌ها، یک «worktree» نامیده می‌شود\&. .sp این درخت کاری جدید در مقایسه با «درخت کاری اصلی» (main worktree) که توسط \fBgit-init\fR(1) یا \fBgit-clone\fR(1) ایجاد شده است، «درخت کاری پیوند‌یافته» (linked worktree) نامیده می‌شود\&. یک مخزن دارای یک درخت کاری اصلی (در صورتی که یک مخزن bare نباشد) و صفر یا چند درخت کاری پیوند‌یافته است\&. هنگامی که کار شما با یک درخت کاری پیوند‌یافته به پایان رسید، آن را با دستور \fBgit\fR \fBworktree\fR \fBremove\fR حذف کنید\&. .sp در ساده‌ترین حالت، دستور \fBgit\fR \fBworktree\fR \fBadd\fR \fI\fR به‌طور خودکار شاخه جدیدی ایجاد می‌کند که نام آن آخرین مؤلفه از \fI\fR است؛ این قابلیت هنگامی که قصد دارید روی یک مبحث جدید کار کنید بسیار کاربردی است\&. برای نمونه، دستور \fBgit\fR \fBworktree\fR \fBadd\fR \fB\&.\&.\fR\fB/hotfix\fR شاخه جدید \fBhotfix\fR را می‌سازد و آن را در مسیر \fB\&.\&.\fR\fB/hotfix\fR دریافت می‌کند\&. اگر می‌خواهید در درخت کاری جدید روی یک شاخه از پیش موجود کار کنید، از \fBgit\fR \fBworktree\fR \fBadd\fR \fI\fR \fI\fR استفاده کنید\&. از سوی دیگر، چنانچه تنها قصد دارید تغییرات آزمایشی انجام دهید یا بدون به هم ریختن روند توسعه جاری آزمایشی انجام دهید، ایجاد یک درخت کاری دورریختنی (\fIthrowaway\fR) که به هیچ شاخه‌ای وابسته نیست مناسب خواهد بود\&. به عنوان مثال، دستور \fBgit\fR \fBworktree\fR \fBadd\fR \fB\-d\fR \fI\fR یک درخت کاری جدید با \fBHEAD\fR جداشده (detached) در همان کامیت شاخه جاری ایجاد می‌کند\&. .sp اگر یک درخت کاری بدون استفاده از دستور \fBgit\fR \fBworktree\fR \fBremove\fR حذف شود، فایل‌های مدیریتی مرتبط با آن که درون مخزن قرار دارند (بخش «جزئیات (DETAILS)» را در ادامه ببینید) در نهایت به صورت خودکار حذف خواهند شد (گزینه \fBgc\&.worktreePruneExpire\fR در \fBgit-config\fR(1) را ببینید)، یا می‌توانید دستور \fBgit\fR \fBworktree\fR \fBprune\fR را در درخت کاری اصلی یا هر درخت کاری پیوند‌یافته دیگری اجرا کنید تا فایل‌های مدیریتی منسوخ پاکسازی شوند\&. .sp اگر درخت کاری برای یک درخت کاری پیوند‌یافته بر روی یک دستگاه حافظه قابل‌حمل یا یک پوشه به اشتراک گذاشته شده در شبکه قرار داشته باشد که همواره متصل (mount) نیست، می‌توانید با اجرای دستور \fBgit\fR \fBworktree\fR \fBlock\fR از هرس شدن فایل‌های مدیریتی آن جلوگیری نمایید و به دلخواه با سوییچ \fB\-\-reason\fR دلیل قفل بودن درخت کاری را شرح دهید\&. .SH "دستورها (COMMANDS)" .PP \fBadd\fR \fI\fR [\fI\fR] .RS 4 یک درخت کاری در \fI\fR ایجاد کرده و \fI\fR را در آن دریافت و مستقر می‌کند\&. درخت کاری جدید به مخزن جاری متصل شده و همه چیز را به جز فایل‌های مختص هر درخت کاری نظیر \fBHEAD\fR، \fBindex\fR و غیره به اشتراک می‌گذارد\&. برای راحتی کار، \fI\fR می‌تواند یک «\fB\-\fR» تنها باشد که مترادف با \fB@\fR{\-1} است\&. .sp اگر \fI\fR نام یک شاخه باشد (فرض کنید \fI\fR) و یافت نشود، و هیچ‌یک از گزینه‌های \fB\-b\fR یا \fB\-B\fR یا \fB\-\-detach\fR به کار نرفته باشند، اما یک شاخه ردیابی دقیقاً در یک ریموت (فرض کنید \fI\fR) با نام منطبق موجود باشد، معادل دستور زیر در نظر گرفته می‌شود: .sp .if n \{\ .RS 4 .\} .nf $ git worktree add \-\-track \-b / .fi .if n \{\ .RE .\} .sp اگر شاخه در چندین ریموت وجود داشته باشد و یکی از آن‌ها با متغیر پیکربندی \fBcheckout\&.defaultRemote\fR نام‌گذاری شده باشد، برای ابهام‌زدایی از آن استفاده خواهد شد، حتی اگر \fI\fR در بین تمام ریموت‌ها یکتا نباشد\&. برای نمونه آن را روی \fBcheckout\&.defaultRemote=origin\fR تنظیم کنید تا چنانچه \fI\fR مبهم بود اما در ریموت \fBorigin\fR وجود داشت، همیشه شاخه‌های ریموت از آنجا دریافت شوند\&. همچنین \fBcheckout\&.defaultRemote\fR را در \fBgit-config\fR(1) ببینید\&. .sp اگر \fI\fR حذف شود و هیچ‌یک از گزینه‌های \fB\-b\fR، \fB\-B\fR یا \fB\-\-detach\fR استفاده نشوند، برای سهولت کار، درخت کاری جدید با شاخه‌ای (فرض کنید \fI\fR) هم‌نام با \fB$\fR(\fBbasename\fR \fI\fR) مرتبط می‌شود\&. اگر \fI\fR وجود نداشته باشد، شاخه جدیدی بر پایه \fBHEAD\fR به‌طور خودکار ایجاد می‌گردد، گویی گزینه \fB\-b\fR \fI\fR داده شده است\&. اگر \fI\fR وجود داشته باشد، در صورتی که در جای دیگری دریافت نشده باشد، در درخت کاری جدید بازبینی می‌شود؛ در غیر این صورت دستور از ایجاد درخت کاری خودداری خواهد کرد (مگر آنکه از گزینه \fB\-\-force\fR استفاده شود)\&. .sp اگر \fI\fR حذف شود، هیچ‌یک از گزینه‌های \fB\-\-detach\fR یا \fB\-\-orphan\fR به کار نروند، و هیچ شاخه محلی معتبری وجود نداشته باشد (یا شاخه‌های ریموت در صورتی که \fB\-\-guess\-remote\fR مشخص شده باشد)، برای سهولت، درخت کاری جدید به یک شاخه جدید هنوز متولدنشده با نام \fI\fR (بر اساس \fB$\fR(\fBbasename\fR \fI\fR) در صورتی که هیچ‌یک از \fB\-b\fR یا \fB\-B\fR استفاده نشده باشند) مرتبط می‌شود، گویی سوییچ \fB\-\-orphan\fR به دستور ارسال شده است\&. در حالتی که مخزن دارای یک ریموت باشد و \fB\-\-guess\-remote\fR استفاده شود، اما هیچ شاخه ریموت یا محلی وجود نداشته باشد، دستور با هشداری با خطا مواجه می‌شود و به کاربر یادآوری می‌کند ابتدا از ریموت واکشی (fetch) کند (یا با استفاده از \fB\-f\fR/\fB\-\-force\fR این رفتار را نادیده بگیرد)\&. .RE .PP \fBlist\fR .RS 4 جزئیات هر درخت کاری را فهرست می‌کند\&. ابتدا درخت کاری اصلی فهرست می‌شود و پس از آن هر یک از درخت‌های کاری پیوند‌یافته قرار می‌گیرند\&. جزئیات خروجی شامل مواردی نظیر bare بودن درخت کاری، بازنگری (revision) که هم‌اکنون دریافت شده است، شاخه‌ای که در حال حاضر دریافت شده (یا «detached HEAD» در صورت نبود شاخه)، عبارت «locked» در صورت قفل بودن درخت کاری، و عبارت «prunable» در صورتی که درخت کاری قابل هرس توسط دستور \fBprune\fR باشد، است\&. .RE .PP \fBlock\fR .RS 4 اگر یک درخت کاری بر روی یک حافظه قابل‌حمل یا یک اشتراک شبکه قرار دارد که همواره متصل نیست، آن را قفل کنید تا از هرس شدن خودکار فایل‌های مدیریتی‌اش جلوگیری شود\&. این کار همچنین مانع جابه‌جا شدن یا حذف آن می‌گردد\&. به صورت اختیاری، دلیل قفل کردن را با گزینه \fB\-\-reason\fR مشخص نمایید\&. .RE .PP \fBmove\fR .RS 4 یک درخت کاری را به مکان جدیدی جابه‌جا می‌کند\&. توجه داشته باشید که درخت کاری اصلی یا درخت‌های کاری پیوند‌یافته شامل زیرماژول‌ها را نمی‌توان با این دستور جابه‌جا کرد\&. (با این حال، در صورتی که درخت کاری اصلی را به‌صورت دستی جابه‌جا کنید، دستور \fBgit\fR \fBworktree\fR \fBrepair\fR می‌تواند پیوند با درخت‌های کاری متصل را دوباره برقرار سازد\&.) .RE .PP \fBprune\fR .RS 4 اطلاعات درخت کاری را در مسیر \fB$GIT_DIR/worktrees\fR برای درخت‌های کاری که درخت کاری فیزیکی آن‌ها وجود ندارد حذف می‌کند\&. این دستور پس از حذف دستی یک درخت کاری که دیگر نیازی به آن نیست مفید است (هرچند دفعات بعد بهتر است از «git worktree remove» برای این منظور استفاده کنید)\&. همچنین اگر یک درخت کاری را به جای دیگری \fIمنتقل کرده‌اید\fR و موجب شده‌اید اطلاعات درخت کاری معلق بماند، برای اتصال مجدد درخت کاری به مکان جدید آن، به «git worktree repair» مراجعه کنید\&. .RE .PP \fBremove\fR .RS 4 یک درخت کاری را حذف می‌کند\&. فقط درخت‌های کاری تمیز (بدون فایل‌های ردگیری‌نشده و بدون هیچ‌گونه تغییر در فایل‌های ردگیری‌شده) قابل حذف هستند\&. درخت‌های کاری ناپاک یا درخت‌های حاوی زیرماژول‌ها را می‌توان با سوییچ \fB\-\-force\fR حذف کرد\&. درخت کاری اصلی هرگز قابل حذف نیست\&. .RE .PP \fBrepair\fR [\fI\fR\&.\&.\&.] .RS 4 در صورت امکان، فایل‌های مدیریتی درخت کاری را که به دلیل عوامل خارجی خراب یا قدیمی شده‌اند تعمیر می‌کند\&. .sp برای نمونه، اگر درخت کاری اصلی (یا مخزن bare) جابه‌جا شود، درخت‌های کاری پیوند‌یافته قادر به پیدا کردن آن نخواهند بود\&. اجرای دستور \fBrepair\fR در درخت کاری اصلی، اتصال را از درخت‌های کاری پیوند‌یافته به درخت کاری اصلی بازسازی می‌کند\&. .sp مشابهاً، اگر درخت کاریِ یک درخت کاری پیوند‌یافته بدون استفاده از دستور \fBgit\fR \fBworktree\fR \fBmove\fR جابه‌جا شود، درخت کاری اصلی (یا مخزن bare) قادر به مکان‌یابی آن نخواهد بود\&. اجرای دستور \fBrepair\fR درون درخت کاری تازه جابه‌جاشده، اتصال را دوباره برقرار می‌سازد\&. اگر چندین درخت کاری پیوند‌یافته جابه‌جا شده باشند، اجرای دستور \fBrepair\fR از هر درخت کاری با قرار دادن \fI\fR جدید هر درخت به عنوان آرگومان، اتصال به تمام مسیرهای مشخص‌شده را مجدداً برقرار می‌کند\&. .sp اگر هم درخت کاری اصلی و هم درخت‌های کاری پیوند‌یافته به صورت دستی منتقل یا کپی شده باشند، اجرای \fBrepair\fR در درخت کاری اصلی و تعیین مسیر \fI\fR جدید هر درخت کاری پیوند‌یافته، کلیه ارتباطات را در هر دو سو بازسازی خواهد کرد\&. .RE .PP \fBunlock\fR .RS 4 قفل یک درخت کاری را باز می‌کند و امکان هرس شدن، جابه‌جایی یا حذف آن را فراهم می‌آورد\&. .RE .SH "گزینه‌ها (OPTIONS)" .PP \fB\-f\fR, \fB\-\-force\fR .RS 4 به‌طور پیش‌فرض، \fBadd\fR از ایجاد یک درخت کاری جدید خودداری می‌کند هنگامی که \fI\fR نام یک شاخه باشد و از پیش توسط درخت کاری دیگری دریافت شده باشد، یا اگر \fI\fR قبلاً به درخت کاری اختصاص داده شده اما موجود نباشد (مثلاً اگر \fI\fR به صورت دستی پاک شده باشد)\&. این گزینه این تدابیر حفاظتی را نادیده می‌گیرد\&. برای افزودن مسیر درخت کاری مفقود اما قفل‌شده، سوییچ \fB\-\-force\fR را دو بار مشخص کنید\&. .sp دستور \fBmove\fR از انتقال یک درخت کاری قفل‌شده خودداری می‌ورزد مگر آنکه سوییچ \fB\-\-force\fR دو بار مشخص شده باشد\&. اگر مقصد از قبل به درخت کاری دیگری منتسب شده اما مفقود باشد (برای نمونه اگر \fI\fR به‌صورت دستی حذف شده باشد)، آنگاه \fB\-\-force\fR اجازه انجام انتقال را می‌دهد؛ در صورتی که مقصد قفل باشد، سوییچ \fB\-\-force\fR را دو بار به کار ببرید\&. .sp دستور \fBremove\fR از پاک کردن یک درخت کاری ناپاک خودداری می‌کند مگر اینکه گزینه \fB\-\-force\fR استفاده شود\&. جهت حذف یک درخت کاری قفل‌شده، گزینه \fB\-\-force\fR را دو بار مشخص کنید\&. .RE .PP \fB\-b\fR \fI\fR, \fB\-B\fR \fI\fR .RS 4 همراه با دستور \fBadd\fR، یک شاخه جدید به نام \fI\fR با شروع از \fI\fR ایجاد نموده و \fI\fR را درون درخت کاری جدید دریافت می‌کند\&. اگر \fI\fR حذف شود، مقدار پیش‌فرض آن \fBHEAD\fR خواهد بود\&. به‌طور پیش‌فرض، گزینه \fB\-b\fR اگر شاخه از قبل وجود داشته باشد از ایجاد آن خودداری می‌کند\&. گزینه \fB\-B\fR این محافظت را لغو کرده و \fI\fR را به \fI\fR بازنشانی می‌نماید\&. .RE .PP \fB\-d\fR, \fB\-\-detach\fR .RS 4 همراه با دستور \fBadd\fR، \fBHEAD\fR را در درخت کاری جدید جدا می‌کند\&. بخش «DETACHED HEAD» را در \fBgit-checkout\fR(1) ببینید\&. .RE .PP \fB\-\-checkout\fR, \fB\-\-no\-checkout\fR .RS 4 به‌طور پیش‌فرض، دستور \fBadd\fR محتوای \fI\fR را دریافت می‌کند؛ با این وجود، می‌توان از گزینه \fB\-\-no\-checkout\fR جهت صرف‌نظر کردن از دریافت به منظور انجام تنظیمات سفارشی (مانند پیکربندی sparse\-checkout) استفاده کرد\&. بخش «Sparse checkout» را در \fBgit-read-tree\fR(1) ببینید\&. .RE .PP \fB\-\-guess\-remote\fR, \fB\-\-no\-guess\-remote\fR .RS 4 همراه با دستور \fBworktree\fR \fBadd\fR \fI\fR، بدون درج \fI\fR، به جای ایجاد شاخه جدید بر مبنای \fBHEAD\fR، چنانچه شاخه ردیابی دقیقاً در یک ریموت وجود داشته باشد که با نام پایه مسیر \fI\fR مطابقت دارد، شاخه جدید را بر پایه آن شاخه ردیابی ریموت قرار می‌دهد و شاخه ردیابی ریموت را به عنوان بالادست («upstream») شاخه جدید علامت‌گذاری می‌کند\&. .sp این حالت همچنین می‌تواند با استفاده از گزینه پیکربندی \fBworktree\&.guessRemote\fR به عنوان رفتار پیش‌فرض تنظیم شود\&. .RE .PP \fB\-\-relative\-paths\fR, \fB\-\-no\-relative\-paths\fR .RS 4 درخت‌های کاری را با استفاده از مسیرهای نسبی یا مسیرهای مطلق (پیش‌فرض) پیوند می‌دهد\&. این گزینه بر متغیر پیکربندی \fBworktree\&.useRelativePaths\fR ارجحیت دارد؛ به \fBgit-config\fR(1) مراجعه کنید\&. .sp همراه با دستور \fBrepair\fR، در صورت عدم تطابق نسبی/مطلق، فایل‌های پیوند به‌روزرسانی می‌شوند، حتی اگر پیوندها صحیح باشند\&. .RE .PP \fB\-\-track\fR, \fB\-\-no\-track\fR .RS 4 هنگام ساخت یک شاخه جدید، در صورتی که \fI\fR یک شاخه باشد، آن را به عنوان بالادست شاخه جدید نشانه‌گذاری می‌کند\&. اگر \fI\fR یک شاخه ردیابی ریموت باشد، این رفتار پیش‌فرض است\&. برای جزئیات به \fB\-\-track\fR در \fBgit-branch\fR(1) مراجعه نمایید\&. .RE .PP \fB\-\-lock\fR .RS 4 درخت کاری را پس از ایجاد در وضعیت قفل‌شده نگه می‌دارد\&. این عمل معادل اجرای دستور \fBgit\fR \fBworktree\fR \fBlock\fR پس از \fBgit\fR \fBworktree\fR \fBadd\fR است، اما بدون خطر شرایط رقابتی (race condition)\&. .RE .PP \fB\-n\fR, \fB\-\-dry\-run\fR .RS 4 همراه با دستور \fBprune\fR، هیچ چیزی را پاک نمی‌کند؛ صرفاً مواردی را که حذف می‌شدند گزارش می‌دهد\&. .RE .PP \fB\-\-orphan\fR .RS 4 همراه با دستور \fBadd\fR، درخت کاری جدید و ایندکس را خالی کرده و درخت کاری را با یک شاخه متولدنشده به نام \fI\fR مرتبط می‌سازد\&. .RE .PP \fB\-\-porcelain\fR .RS 4 همراه با دستور \fBlist\fR، خروجی را در قالبی با پردازش آسان برای اسکریپت‌ها تولید می‌کند\&. این قالب در بین نسخه‌های گیت و بدون توجه به پیکربندی‌های کاربر پایدار باقی می‌ماند\&. توصیه می‌شود این سوییچ با گزینه \fB\-z\fR همراه شود\&. برای جزئیات به ادامه متن رجوع کنید\&. .RE .PP \fB\-z\fR .RS 4 هنگامی که گزینه \fB\-\-porcelain\fR همراه با \fBlist\fR مشخص شده باشد، پایان هر خط را به جای خط جدید با یک کاراکتر \fINUL\fR علامت می‌زند\&. این ویژگی تجزیه خروجی را هنگامی که مسیر درخت کاری حاوی نویسه خط جدید باشد ممکن می‌سازد\&. .RE .PP \fB\-q\fR, \fB\-\-quiet\fR .RS 4 همراه با دستور \fBadd\fR، پیام‌های بازخورد را مهار و ناپیدا می‌کند\&. .RE .PP \fB\-v\fR, \fB\-\-verbose\fR .RS 4 همراه با دستور \fBprune\fR، تمام حذفیات را گزارش می‌دهد\&. .sp همراه با دستور \fBlist\fR، اطلاعات اضافه‌ای درباره درخت‌های کاری ارائه می‌کند (در ادامه ببینید)\&. .RE .PP \fB\-\-expire\fR \fI