الجلب والسحب والإرسال
السحب
ثلاثة أوضاع، تُختار من القائمة المنسدلة: الافتراضي، أو التقديم السريع فقط، أو إعادة الأساس. والتغييرات المحلية تُخبَّأ وتُستعاد تلقائيًا حول السحب، فالشجرة المتسخة لا تعرقلك.
فرع لا يتتبّع شيئًا
git pull هو جلب يتبعه دمج، والدمج يحتاج أن يعرف في ماذا يدمج — أي الفرع الأعلى
للفرع الحالي. الفرع الذي أنشأته محليًا، أو الذي أُخرج دون تتبّع، لا يملك واحدًا. ينجح
الجلب رغم ذلك، وتمرّ قائمة طويلة من مراجع origin/* المحدَّثة، ثم يتوقف git عند
"There is no tracking information for the current branch". لم يُسحب شيء ولم ينكسر
شيء: النصف الثاني ببساطة لم يجد هدفًا.
يقرأ Gitcito هذا الخطأ ويعرض الإصلاح كزر واحد، ويختار أيّهما بحسب ما إذا كان المستودع البعيد يحمل الفرع أصلًا:
| موجود على البعيد | اربط واسحب — يضبط الفرع الأعلى على <البعيد>/<الفرع> ثم ينفّذ السحب الذي طلبته. قابل للتراجع بـ ⌘Z، والتراجع يفكّ التتبّع من جديد. |
| ليس هناك بعد | ادفع الفرع — دفع عادي، يضبط الفرع الأعلى في الطريق. |
المستودع البعيد المعروض هو origin إن وُجد، وإلا فأول واحد في القائمة. وأيّ الحالتين
أنت فيها يُقرأ من مراجع التتبّع لا من الشبكة، فالجواب يعكس الجلب الذي جرى للتوّ.
الإرسال
الإرسالات القسرية تستخدم دائمًا --force-with-lease — النسخة الآمنة التي ترفض
إن كان المستودع البعيد قد تحرك منذ آخر نظرة لك. وإرسال فرع محمي قسريًا يطلب
تأكيدًا (القائمة في ترس إعدادات المستودع).

لا مستودعات بعيدة
الإرسال والسحب والجلب تحتاج وجهة. مستودع بلا أيٍّ منها — git init حديث، أو
نسخة أُزيل منها origin — كان يجعل هذه الأزرار لا تفعل شيئًا، أو يعدّ جلبًا فارغًا
نجاحًا. الآن تفتح إضافة مستودع بعيد مع تحذير، لتلصق عنوانًا أو تنشئ المستودع
على المضيف. الإضافة تُتمّ الفعل الذي بدأته: الإرسال ينشر الفرع الحالي، والسحب
يجلب ثم يسحب، والجلب يجلب فقط.
الجلب التلقائي في الخلفية يبقى صامتًا إن لم يكن هناك ما يُجلب. لا يفتح حوارًا على المؤقّت.
أكثر من مستودع بعيد
زر إرسال يستهدف منبع الفرع. والسهم المجاور له يعرض أيضًا، متى صار للمستودع أكثر من مستودع بعيد واحد:
| الإرسال إلى مستودع بعيد واحد | اختر مستودعًا بعيدًا واحدًا — نسخة متفرعة، أو مرآة، أو هدف نشر |
| الإرسال إلى كل المستودعات البعيدة (N) | إرسال واحد لكل مستودع بعيد، بالترتيب |
| إرسال كل الوسوم إلى | git push <remote> --tags، كل وسم محلي دفعةً واحدة |
والإجراءان نفساهما يجلسان على صف كل مستودع بعيد في الشريط الجانبي، وهو عادةً حيث تكون حين يطرأ السؤال.
الرفض لا يلغي البقية. فإرسال نسخة متفرعة ومنبعها هو بالضبط الحالة التي يرفض فيها أحد الطرفين وينبغي أن يمرّ الآخر، ولذا يبلّغ كل مستودع بعيد على حدة: النجاحات تُسمّى في إشعار واحد، وكل إخفاق يحصل على إشعاره الخاص مع سبب git.
والمستودع البعيد الأول في القائمة وحده هو الذي يعيّن منبع الفرع. فللفرع منبع واحد، وآخر مستودع بعيد أُرسل إليه ليس تلقائيًا هو الذي تريده متتبَّعًا.
ويجري الطريقان الفحوص نفسها التي يجريها الإرسال العادي — تأكيد الفرع المحمي وحارس الأسرار. فالنشر إلى مستودعين بعيدين ضِعف الانكشاف، لا نصف الحذر.
الفروع التي لست عليها
git pull لا يحرّك سوى HEAD، ولهذا يطلب منك معظم العملاء سحب الفرع أولًا قبل
تحديثه. Gitcito لا يطلب ذلك: انقر بالزر الأيمن على أي فرع محلي — في الشريط
الجانبي أو على شارته في المخطط — لتحصل على سحب <الفرع>
وإرسال <الفرع>، وكلاهما يعمل على ذلك الفرع لا على الفرع المسحوب حاليًا.
سحب <الفرع> |
يقدّم المرجع المحلي إلى مصدره بتقديم سريع، دون سحب الفرع. شجرة العمل لا تُمسّ. يمكن التراجع عنه بـ ⌘Z — يعيد التراجع الفرع إلى مكانه السابق. |
إرسال <الفرع> |
إرسال عادي لذلك الفرع، بالحمايات نفسها للفروع المحمية والأسرار التي يطبّقها زر شريط الأدوات. |
السحب معطّل لفرع لا يتتبّع شيئًا — لا مصدر للسحب منه. أما على الفرع الذي أنت عليه فيرجع الاثنان إلى السحب العادي، الذي يحدّث شجرة العمل أيضًا.
الحدّ الجدير بالمعرفة: الفرع الذي تشعّب عن مصدره يُرفض، مع رسالة تقول ذلك. التوفيق بين تشعّبين هو دمج أو إعادة أساس، وكلاهما يحتاج شجرة عمل — فتلك الحالة ما زالت تكلّفك سحب الفرع. الإرسال القسري لفرع لست عليه يُعرض حين يرفض البعيد الإرسال، أما مسار «اسحب ثم أعد المحاولة» فلا، للسبب نفسه.
الجلب
لـ جلب زرّ خاص به في شريط الأدوات، بجوار السحب. يجلب من كل مستودع بعيد ويقلّم،
فتصبح مراجع origin/* وكل عدّادات التقدّم/التأخّر محدَّثة — دون أن يمسّ فرعك ولا شجرة
عملك. هذا هو الزر حين تريد أن ترى ما فعله الآخرون دون تحريك عملك أنت.
وهناك أيضًا الجلب التلقائي في الخلفية على فترة تحددها أنت (الإعدادات ← عام).
مرّر المؤشر فوق زر الجلب فيظهر العمر تحته بهدوء — قبل 4 د — بلون كهرماني إن
تجاوز الجلب خمس عشرة دقيقة. ولا يشغل حيّزًا في شريط الأدوات أبدًا، لأنه يجيب سؤالًا
لا يخطر إلا وأنت تمدّ يدك إلى الزر. ويُقرأ من FETCH_HEAD، فـ git fetch المنفَّذ
في طرفية يُحسب كالمنفَّذ هنا تمامًا.
والجلب الذي يكتشف سجلًا أُعيدت كتابته يقول ذلك: يسمّي إشعار الفرع، ويكتسب صفه علامة تفتح ما الذي تغيّر منذ عند الالتزام الذي كان يشير إليه بالضبط.
عدة مستودعات دفعةً واحدة
- تبويب المجموعة يستطيع جلب الكل / سحب الكل لشجرته الفرعية بكاملها.
- وغرفة التحكم تفعل ذلك عبر مساحة العمل، وتستطيع أن تسحب فقط المستودعات المتأخرة فعلًا.
المستودعات البعيدة
أضِف وحرّر وأزِل واجلب مستودعات بعيدة مفردة من الشريط الجانبي. وصفوف الفروع تحمل شارات حضور لكل مستودع بعيد، فترى بلمحة أي المستودعات البعيدة لديه نسخة من فرع.
الجلب أو السحب أو الإرسال بلا مستودعات بعيدة يفتح حوار إضافة المستودع البعيد نفسه، بدل أن ينجح في الفراغ. انظر الجلب والسحب والإرسال.
انظر أيضًا: غرفة التحكم · الاستضافة وطلبات السحب