كيف تدفع مجرد فرع git واحد (ولا يوجد فروع أخرى)؟
سؤال
أنا أعمل على مستودع GIT المحلي. هناك فرعان ، master
و feature_x
.
اريد دفع feature_x
إلى الريبو البعيد ، لكنني لا أريد دفع التغييرات على master
فرع.
سوف git push origin feature_x
من وجهة نظري feature_x
فرع (feature_x
فرع موجود بالفعل على عن بعد) العمل؟
لا أريد اختبار هذا على صندوق بلدي ، لأنني لا أستطيع الدفع لإتقان الآن.
المحلول
نعم ، فقط افعل ما يلي
git checkout feature_x
git push origin feature_x
نصائح أخرى
بشكل افتراضي git push
تحديث جميع الفروع البعيدة. ولكن يمكنك تكوين GIT لتحديث الفرع الحالي فقط إلى المنبع.
git config push.default upstream
وهذا يعني أن GIT سوف يقوم بتحديث الفرع الحالي (الذي تم تسجيل الخروج) فقط عند قيامك بالدفع.
الخيارات الصالحة الأخرى هي:
nothing
: لا تدفع أي شيء (خطأ) إلا إذا يتم إعطاء Refspec صراحة. هذا يعني في المقام الأول للأشخاص الذين يرغبون في تجنب الأخطاء من خلال أن تكون صريحة دائمًا.matching
: ادفع جميع الفروع وجود نفس الاسم على كلا الطرفين. (الخيار الافتراضي قبل VER 1.7.11)upstream
: ادفع الفرع الحالي إلى فرع المنبع. هذا الوضع منطقي فقط إذا كنت تدفع إلى نفس المستودع الذي ستقوم به عادة (أي سير العمل المركزي). لا حاجة للحصول على نفس الاسم للفرع المحلي والبعيد.tracking
: تم إهماله ، والاستخدامupstream
في حين أن.current
: ادفع الفرع الحالي إلى الفرع البعيد من نفس الاسم على الطرف المتلقي. يعمل في كل من سير العمل المركزي وغير المركزي.simple
: [متاح منذ الإصدار 1.7.11] في سير العمل المركزي ، العمل مثلupstream
مع سلامة إضافية لرفض الدفع إذا كان اسم فرع المنبع يختلف عن المساحة المحلية. عند الضغط على جهاز التحكم عن بُعد يختلف عن جهاز التحكم عن بُعد الذي تسحب منه عادةً ، اعمل كماcurrent
. هذا هو الخيار الأكثر أمانًا وهو مناسب للمبتدئين. أصبح هذا الوضع الافتراضي في GIT 2.0.
تحديث بسيط في أعلى إجابة كارثيك بوس - يمكنك تكوين git على مستوى العالم ، للتأثير على جميع مساحات العمل الخاصة بك للتصرف بهذه الطريقة:
git config --global push.default upstream
لذلك ، دعنا نقول أن لديك فرعًا محليًا فو ، وهو جهاز تحكم عن بعد الأصل وأصل/سيد فرع عن بُعد.
لدفع محتويات Foo إلى Origin/Master ، تحتاج أولاً إلى ضبط المنبع:
git checkout foo
git branch -u origin/master
ثم يمكنك الدفع إلى هذا الفرع باستخدام:
git push origin HEAD:master
في الأمر الأخير ، يمكنك إضافة -قوة لاستبدال تاريخ الأصل/سيد بأكمله بتلك الخاصة بـ FOO.