git switch
التبديل بين الفروع
ينقلك الأمر 'git switch' إلى فرع آخر: يتبعه HEAD وتتغيّر ملفات العمل لتطابق ذلك الفرع. ومع -c ينشئ الفرع أولًا. أُضيف في Git 2.23 ليتولّى جزء التبديل بين الفروع من git checkout، بأسماء أوضح وإعدادات افتراضية أكثر أمانًا — يرفض التبديل إذا كان سيكتب فوق تعديلاتك غير المسجَّلة.
الصيغة
git switch [<options>] <branch>
git switch [<options>] (-c|-C) <new-branch> [<start-point>]
git switch [<options>] --detach [<start-point>]
git switch [<options>] --orphan <new-branch>الخيارات
اختيار الخيار المناسب
switch مقابل checkout
إجراءات الفروع نفسها، قديمًا وحديثًا
| الأمر | المكافئ في git checkout |
|---|---|
git switch main | git checkout main |
git switch -c feature/login | git checkout -b feature/login |
git switch --detach HEAD~1 | git checkout HEAD~1 |
git switch - | git checkout - |
أمثلة
التبديل إلى فرع
git switch mainالانتقال إلى main.
إنشاء وتبديل
git switch -c feature/loginأنشئ feature/login وانتقل إليه.
الفرع السابق
git switch -العودة إلى الفرع الذي كنت عليه قبل ذلك.
تتبّع فرع بعيد
git switch feature/loginإذا لم يوجد إلا origin/feature/login، يُنشأ فرع محلي يتتبّعه.
أمثلة على سير العمل
git switch mainالبدء من main
git pullجلب أحدث main
git switch -c feature/loginإنشاء فرعك
git stashركن التعديلات جانبًا
git switch mainالانتقال
git switch - && git stash popالعودة واستعادة التعديلات
حل المشكلات
error: Your local changes to the following files would be overwritten by checkout
السبب: تعديل غير مسجَّل يتعارض مع الفرع الآخر
سجّله أو خبّئه بـ stash أولًا، أو استخدم --discard-changes للتخلّص منه
fatal: invalid reference: feature/x
السبب: الفرع غير موجود
أنشئه بـ git switch -c، أو شغّل git fetch إن كان موجودًا على origin
fatal: a branch is expected, got commit
السبب: أعطيت commit وليس فرعًا
استخدم git switch --detach <commit>
نصائح وأخطاء شائعة
أفضل الممارسات
- ✓استخدم git switch للفروع وgit restore للملفات بدل git checkout.
- ✓حافظ على حالة نظيفة (commit أو stash) قبل التبديل.
- ✓اسحب main قبل إنشاء فرع جديد منه.
أخطاء متكررة
- ✗التبديل مع تعديلات غير مسجَّلة والتفاجؤ بأنها تنتقل معك إلى الفرع الجديد.
- ✗استخدام git switch <commit> — الـ commits تحتاج --detach.
- ✗نسيان -c والحصول على "invalid reference" لفرع غير موجود بعد.
الأسئلة الشائعة
للفروع يؤدي العمل نفسه، لكن بخيارات أوضح ولا يمكنه لمس الملفات بالخطأ.
Git 2.23 أو أحدث.
تنتقل معك إلى الفرع الجديد، إلا إذا تعارضت — فيُرفض التبديل.