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>
[ ] اختياري| أو<arg> قيمة تُستبدل... قابل للتكرار--flag خيار

الخيارات

انقر على أي خيار لتوسيعه

مبتدئ (2)

إنشاء فرع جديد عند الـ commit الحالي (أو عند نقطة بداية محدّدة) والتبديل إليه.

موصى بهإنشاء وتبديل في خطوة واحدة

مثال

git switch -c feature/login

التبديل حتى لو كتب فوق تغييرات غير مسجَّلة؛ يتم التخلّص من تلك التغييرات.

غير موصى بهيحذف التعديلات غير المسجَّلة بصمت؛ خبّئها بـ stash بدلًا من ذلك

مثال

git switch --discard-changes main

متوسط (2)

مثل -c، لكن إن كان الفرع موجودًا يُعاد ضبطه إلى نقطة البداية.

عند الحاجةيعيد ضبط فرع موجود — تُستبعد commits القديمة

مثال

git switch -C feature/login

التبديل إلى commit بدل فرع (HEAD منفصل)، مثلًا لفحص نسخة قديمة.

عند الحاجةفحص commit قديم دون تحريك أي فرع

مثال

git switch --detach HEAD~1

متقدم (1)

إنشاء فرع جديد بلا سجل وإزالة الملفات المتتبَّعة من القرص.

عند الحاجةسجل منفصل، مثل فرع gh-pages

مثال

git switch --orphan docs

اختيار الخيار المناسب

switch مقابل checkout

إجراءات الفروع نفسها، قديمًا وحديثًا

الأمرالمكافئ في git checkout
git switch maingit checkout main
git switch -c feature/logingit checkout -b feature/login
git switch --detach HEAD~1git 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، يُنشأ فرع محلي يتتبّعه.

أمثلة على سير العمل

1
git switch main

البدء من main

2
git pull

جلب أحدث main

3
git switch -c feature/login

إنشاء فرعك

1
git stash

ركن التعديلات جانبًا

2
git switch main

الانتقال

3
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" لفرع غير موجود بعد.

الأسئلة الشائعة

A:

للفروع يؤدي العمل نفسه، لكن بخيارات أوضح ولا يمكنه لمس الملفات بالخطأ.

A:

Git 2.23 أو أحدث.

A:

تنتقل معك إلى الفرع الجديد، إلا إذا تعارضت — فيُرفض التبديل.