GIT-SWITCH(1) Git Manual GIT-SWITCH(1) نام (NAME) git-switch - جابه‌جایی میان شاخه‌ها خلاصه دستور (SYNOPSIS) git switch [] [--no-guess] git switch [] --detach [] git switch [] (-c|-C) [] git switch [] --orphan توضیحات (DESCRIPTION) جابه‌جایی به یک شاخهٔ مشخص‌شده. درخت کاری (working tree) و نمایه (index) به‌روزرسانی می‌شوند تا با شاخه مطابقت داشته باشند. تمامی کامیت‌های جدید به نوک (tip) این شاخه اضافه خواهند شد. به‌صورت اختیاری می‌توان یک شاخهٔ جدید با استفاده از -c یا -C ایجاد کرد، یا به‌صورت خودکار از یک شاخهٔ ریموت هم‌نام ایجاد نمود (نگاه کنید به --guess)، و یا با --detach درخت کاری را هم‌زمان با جابه‌جایی، از هر شاخه‌ای جدا کرد. جابه‌جایی شاخه‌ها نیازی به خالی و تمیز بودن نمایه و درخت کاری ندارد (یعنی عدم وجود تفاوت در مقایسه با HEAD). با این حال، اگر این عملیات منجر به از بین رفتن تغییرات محلی شود لغو خواهد شد، مگر آنکه با --discard-changes یا --merge دستور دیگری داده شده باشد. گزینه‌ها (OPTIONS) شاخه برای جابه‌جایی به آن. نام برای شاخهٔ جدید. نقطهٔ شروع برای شاخهٔ جدید. مشخص کردن یک به شما امکان می‌دهد تا شاخه‌ای را بر مبنای نقطه‌ای دیگر از تاریخچه، به‌جز جایی که HEAD در حال حاضر به آن اشاره دارد بسازید. (یا در مورد --detach، امکان بررسی و جدا شدن از نقطه‌ای دیگر را فراهم می‌کند.) می‌توانید از ساختار @{-} برای اشاره به -امین شاخه یا کامیتی که قبلاً با استفاده از عملیات git switch یا git checkout به آن جابه‌جا شده‌اید استفاده کنید. همچنین می‌توانید - را مشخص نمایید که مترادف با @{-1} است. این اغلب برای جابه‌جایی سریع میان دو شاخه، یا لغو جابه‌جایی اشتباه شاخه استفاده می‌شود. به عنوان یک حالت ویژه، می‌توانید از ... به عنوان میان‌بری برای پایهٔ ادغام (merge base) میان و استفاده کنید، مشروط بر اینکه دقیقاً یک پایهٔ ادغام وجود داشته باشد. می‌توانید حداکثر یکی از و را حذف کنید که در این صورت پیش‌فرض آن HEAD خواهد بود. -c , --create پیش از جابه‌جایی به شاخه، شاخهٔ جدیدی به نام با شروع از ایجاد می‌کند. این از نظر تراکنشی معادل موارد زیر است: $ git branch $ git switch بدین معنا که شاخه بازنشانی/ایجاد نمی‌شود مگر آنکه git switch موفقیت‌آمیز باشد (برای مثال، هنگامی که شاخه در درخت کاری دیگری در حال استفاده است، نه تنها شاخهٔ فعلی یکسان می‌ماند، بلکه شاخه به نقطهٔ شروع نیز بازنشانی نمی‌شود). -C , --force-create مشابه --create است، با این تفاوت که اگر از قبل وجود داشته باشد، به بازنشانی خواهد شد. این یک میان‌بر کاربردی برای موارد زیر است: $ git branch -f __ $ git switch __ -d, --detach جابه‌جایی به یک کامیت برای بازبینی و آزمایش‌های دورانداختنی. برای جزئیات به بخش "DETACHED HEAD" در git-checkout(1) مراجعه کنید. --guess, --no-guess اگر یافت نشود اما یک شاخهٔ ردیابی در دقیقاً یک ریموت (که آن را می‌نامیم) با نام منطبق وجود داشته باشد، معادل دستور زیر تلقی می‌شود: $ git switch -c --track / اگر شاخه در چند ریموت وجود داشته باشد و یکی از آن‌ها توسط متغیر پیکربندی checkout.defaultRemote مشخص شده باشد، برای ابهام‌زدایی از آن استفاده خواهیم کرد؛ حتی اگر در بین تمام ریموت‌ها یکتا نباشد. برای نمونه آن را به checkout.defaultRemote=origin تنظیم کنید تا در صورت مبهم بودن اما موجود بودن در ریموت origin، شاخهٔ ریموت همواره از آنجا دریافت شود. همچنین به checkout.defaultRemote در git-config(1) نگاه کنید. گزینهٔ --guess رفتار پیش‌فرض است. از --no-guess برای غیرفعال کردن آن استفاده کنید. رفتار پیش‌فرض را می‌توان از طریق متغیر پیکربندی checkout.guess تنظیم کرد. -f, --force نام مستعاری برای --discard-changes. --discard-changes حتی در صورت وجود تفاوت میان نمایه یا درخت کاری با HEAD عملیات را ادامه می‌دهد. هم نمایه و هم درخت کاری بازیابی می‌شوند تا با هدف جابه‌جایی مطابقت پیدا کنند. اگر --recurse-submodules مشخص شده باشد، محتوای زیرماژول‌ها نیز بازیابی می‌شود تا با هدف جابه‌جایی مطابقت یابد. این گزینه برای دور ریختن تغییرات محلی استفاده می‌شود. -m, --merge اگر تغییرات محلی روی یک یا چند فایل داشته باشید که بین شاخهٔ فعلی و شاخه‌ای که به آن جابه‌جا می‌شوید متفاوت باشند، دستور معمولاً برای حفظ تغییرات شما در بستر اصلی، از جابه‌جایی شاخه‌ها خودداری می‌کند. با این حال با این گزینه، تغییرات محلیِ دارای تداخل، به‌طور خودکار پیش از جابه‌جایی ذخیره (stash) شده و پس از آن مجدداً اعمال می‌شوند. اگر تغییرات محلی با تفاوت‌های میان شاخه‌ها هم‌پوشانی نداشته باشند، جابه‌جایی بدون ذخیره‌سازی انجام می‌شود. اگر اعمال مجدد تغییرات ذخیره‌شده منجر به تداخل شود، این مدخل در فهرست تغییرات ذخیره‌شده (stash list) باقی می‌ماند. پس از اتمام کار، تداخل‌ها را برطرف کرده و git stash drop را اجرا کنید، یا پیش از اجرای بعدیِ git stash pop جهت اعمال مجدد تغییرات، درخت کاری را پاک کنید (برای نمونه با git reset --hard). --conflict=