سؤال كيف يمكنني إعادة تعيين "master" إلى "origin / master"؟


هل يمكنني القيام بما يلي بطريقة أبسط؟

git checkout origin/master
git branch -D master
git branch master
git checkout master

169
2018-04-20 10:34


الأصل


في بعض الأحيان ، يمكن القيام بذلك دون لمس شجرة العمل: stackoverflow.com/a/12343727/586086 - Andrew Mao
الرجاء تحديث إجابتك المقبولة: @ @ KindDragon هي الإجابة الصحيحة والأقصر. - Robert Siemer


الأجوبة:


مثل KindDragonالصورة إجابة يذكر ، يمكنك إعادة master مباشرة في origin/master مع:

git checkout -B master origin/master

ال git checkout صفحة رجل  يذكر:

إذا -B معطى، <new_branch> يتم إنشاؤه إذا لم يكن موجودًا ؛ خلاف ذلك ، يتم إعادة تعيينه. هذا هو المعادل المعاملات من

$ git branch -f <branch> [<start point>]
$ git checkout <branch>

اقترح في الأصل:

شيء مثل:

$ git checkout master

# remember where the master was referencing to
$ git branch previous_master

# Reset master back to origin/master
$ git reset --hard origin/master

مع الخطوة 2 كونها اختيارية.


229
2018-04-20 11:22



يمكنك القيام بذلك مع خط واحد. - Robert Siemer


يدعم Git هذا الأمر:

git checkout -B master origin/master

تفحص ال origin/master فرع ثم إعادة تعيين master فرع هناك.


74
2017-08-24 19:30



الجواب الوحيد الحقيقي. - Robert Siemer
حفظ أربعة ضربات المفاتيح - لا تحتاج إلى علامات الاقتباس. فقط: بوابة الخروج -B أصل الرئيسي / الرئيسي - zumalifeguard
دعنا نقول أني ركزت على شيئين ، الأول هو دمج مع الفرع والثاني منتظم. ماذا يحدث للدمج إذا عدت إلى الأصل / المعلم؟ - utdev
لا يجب عليك git fetch origin master قبل أن تكون على يقين origin/master يتم تحديث؟ - pedrozath
نعم ، بالطبع مع كل الحلول التي يجب عليك القيام بها git fetch أول - KindDragon


أعتقد أن إجابة فونك لديها تعقيد مقارنة بهذا الخيار:

git update-ref refs/heads/master origin/master
git reset --hard master

يسجل git تلقائيًا كل قيمة للمرجع (من خلال السجل). حتى بعد تشغيل هذا الأمر ، ثم master@{1} يشير إلى القيمة السابقة للسيد.

إن إجابة VonC صحيحة ، لكنها تضيع وقت الخروج من القيمة الرئيسية للسيد في نظام الملفات.

إذا كنت تهتم الكائنات اليتيمة في الريبو ، يمكنك تشغيل git gc


28
2018-01-23 20:48



يبدو بديلا للاهتمام. +1 - VonC
ما زلت أحصل Already on 'master' - yourfriendzak
yourfriendzak ، لقد نسيت أن تأخذ في الاعتبار أنه قد يكون لديك بالفعل السحب قبل تحديث الرئيسي. لقد قمت بتحديث الإجابة لتكون واحدة يجب أن تعمل حتى في هذه الحالة أيضًا. - Alexander Bird
يعمل هذا حتى لو لم تكن في وضع رئيسي (مثل حالة HEAD مفصولة تشير فعليًا إلى رأس النصي / الرئيسي). ثم ، يمكنك الخروج الرئيسي دون الحاجة إلى قلب الملفات القديمة من خلال الريبو. عظيم! - Andrew Mao


إذا كنت بالفعل في master يمكنك القيام بما يلي:

git reset --hard origin/master

وسوف يشير المحلية master فرع لجهاز التحكم عن بعد origin/master وتجاهل أي تعديلات في دير العمل.


12
2018-06-25 15:47



وسوف يحذف الملفات! إذا قمت بإنشاء / تحرير ملفات ، وقمت بتشغيل "git add" عليها ، فسيقوم هذا الأمر بحذفها. كن حذرا. - Cheeso


أنت بالفعل سيد. تريد إزالة المصدر البعيد git pull لا تفعل أي شيء. وبالتالي

git remote rm origin

يمكنك بعد ذلك إضافة المستودع الحالي كمصدر للمستودع البعيد إذا كنت ترغب في ذلك.

ملاحظة: إذا كان المحلي متقدمًا عن بُعد ، فسيقوم الحل بمسح التغييرات المحلية!


-2
2018-01-28 03:04



هذا الجواب لا معنى له. - ADTC
هذا مضلل بشكل مباشر وقد يضر بالمشروع الذي يعمل عليه الناس. - Wisienkas
هذا ليس صحيحا. لست متأكدا لماذا كان لديك upvote. - Saher Ahwal