سؤال

كنت أعمل على شيء ما ، وقررت أنه كان مشدودًا تمامًا ... بعد أن ارتكبت بعضًا منه. لذلك جربت التسلسل التالي:

git reset --hard
git rebase origin
git fetch
git pull
git checkout

عند هذه النقطة تلقيت الرسالة

Your branch is ahead of 'origin/master' by 2 commits.

أريد أن أتجاهل ارتباطاتي المحلية, ، دون الحاجة إلى مسح الدليل المحلي الخاص بي وتنزيل كل شيء. كيف يمكنني إنجاز ذلك؟

هل كانت مفيدة؟

المحلول

git reset --hard origin/master

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

نصائح أخرى

جانبا ، بصرف النظر عن إجابة Mipadi (التي يجب أن تعمل بالمناسبة) ، يجب أن تعرف ذلك:

git branch -D master
git checkout master

كما يفعل بالضبط ما تريد بدونه having to redownload everything (اقتباس الخاص بك معاد صياغة). ذلك لأن إعادة الريبو المحلية تحتوي على نسخة من الريبو عن بُعد (وهذه النسخة ليست هي نفسها الدليل المحلي الخاص بك ، فهي ليست حتى فرعك الذي تم فحصه).

يعد مسح الفرع آمنًا تمامًا وإعادة بناء هذا الفرع سريع للغاية ولا يتضمن أي حركة مرور للشبكة. تذكر أن GIT هي في المقام الأول إعادة تصميم محلية حسب التصميم. حتى الفروع البعيدة لديها نسخة على المحلية. لا يوجد سوى القليل من البيانات الوصفية التي تخبر Git أن نسخة محلية محددة هي في الواقع فرع بعيد. في GIT ، جميع الملفات على القرص الثابت الخاص بك في كل وقت.

إذا لم يكن لديك أي فروع أخرى غير Master ، فيجب عليك:

git checkout -b 'temp'
git branch -D master
git checkout master
git branch -D temp

ما أفعله هو أنني أحاول إعادة تعيين بجد. هذا سوف يمحو كل الالتزامات المحلية:

git reset --hard HEAD^

تحتاج إلى الجري

git fetch

للحصول على جميع التغييرات وبعد ذلك لن تتلقى رسالة مع "فرعك في المستقبل".

لقد رأيت حالات حيث أصبح جهاز التحكم عن بُعد غير متزامن ويحتاج إلى تحديثه. اذا كان reset --hard أو أ branch -D فشل في العمل ، حاول

git pull origin
git reset --hard 

كان علي أن أفعل:

git checkout -b master

كما قال جيت أنه لا يوجد ، لأنه تم مسحه مع

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