كيف تدفع مجرد فرع git واحد (ولا يوجد فروع أخرى)؟

StackOverflow https://stackoverflow.com/questions/820178

  •  03-07-2019
  •  | 
  •  

سؤال

أنا أعمل على مستودع 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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top