كيف تتجاهل الالتزامات المحلية في غيت؟
سؤال
كنت أعمل على شيء ما ، وقررت أنه كان مشدودًا تمامًا ... بعد أن ارتكبت بعضًا منه. لذلك جربت التسلسل التالي:
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