GIT PULL يقول محدثًا ولكن PUT GIT يرفض غير سريع للأمام
سؤال
لقد سحبت للتو فرعًا جديدًا ، وقمت ببعض التغييرات المحلية ، والالتزام وحاولت الدفع. أعطيت هذا الخطأ: ! [rejected] groups -> groups (non-fast forward)
لذلك حاولت أن أسحب ولكن قيل Already up-to-date.
إليك ما أحصل عليه ثم دفع.
~/dev$ git pull origin groups
Already up-to-date.
~/dev$ git push origin groups
To /mnt/ebs/git/repo.git
! [rejected] groups -> groups (non-fast forward)
error: failed to push some refs to '/mnt/ebs/git/repo.git'
هل يمكن لأي شخص أن يشرح كيف يمكن أن يحدث هذا وكيف يمكنني إصلاحه؟
المحلول
عندما قمت بسحب الفرع ، هل استخدمت خيار "-track" (من أجل إبقائك الفرع المحلي لتتبع الفرع البعيد). إذا لم تفعل ذلك ، فيمكن أن يفسر أن الأمر "دمج" لا يعمل.
يمكنك القيام بالاندماج يدويًا:
git fetch
git merge origin/groups
لمقارنة إعادة التجهيزات المحلية والبعيدة ، أقترح عليك هذا الأمر (أضفه في الاسم المستعار ، إنه مفيد):
git log --graph --oneline --all --decorate
ستقوم بطباعة شجرة تاريخ المشروع ، وتظهر ملصقات الفرع. لذلك سترى أين يتباعد فرعك وفرع الأصل.
ملاحظة: إذا كنت ترغب في الحفاظ على تاريخ خطي ، بدلاً من "دمج" ، يمكنك القيام بـ "Rebase" لفرعك المحلي على جهاز التحكم عن بُعد قبل الدفع:
git rebase origin/groups
git push origin groups
نصائح أخرى
جئت إلى هنا مع مشكلة مختلفة.
تم إعداد git الخاص بي لدفع جميع الفروع. كنت في فرع فو ، لكنه كان يحاول أيضًا دفع ماستر ، وهو ما لم يكن محدثًا. كانت الحيلة تلاحظ أنها كانت تحاول دفع الماجستير:
To git@git.machine:repo
! [rejected] master -> master (non-fast-forward)
أضفت ما يلي إلى .gitConfig لدفع الفرع الحالي بشكل افتراضي:
[push]
default = current
هذه ليست إجابة على السؤال طرح. واجهت مشكلة مختلفة مع نفس رسالة الخطأ.
لم يكن لدى فرعتي المحلية الفرع البعيد لسحب التغييرات من تكوينها بشكل صحيح [GIT سحب]. كان هذا واضحًا من O/P من git remote show origin
. لذلك ، كان علي استخدام git pull origin <branch_name>
بدلاً من git pull
لسحب التغييرات.