سؤال

أستسلم!كلما حاولت الدفع أشعر بالغباء:

! [rejected]        master -> master (non-fast forward)
error: failed to push some refs to 'git@github.com:companyX/projectX.git'

فريقنا لديه إعداد git جديد.بدلاً من إنشاء فروع خاصة، قمت الآن بتشكيل مستودعنا الرئيسي (على جيثب) لإنشاء نسختي الخاصة.

في مرحلة ما ما فعلته هو:

$ git fetch upstream master:upstreammaster

إذن هذا هو الإعداد الحالي الخاص بي::

$ git branch
master
* upstreammaster

$ git remote -v
origin  git@github.com:userX/projectX.git
upstream    git@github.com:companyX/projectX.git

حيث userX هو مستودعي الخاص.

لذلك أذهب وأجري بعض التغييرات على فرع upstreammaster الخاص بي، والسحب من "upstream master".كل شيء يدمج والاشياء:

$ git pull upstream master
remote: Counting objects: 95, done.
remote: Compressing objects: 100% (60/60), done.
remote: Total 60 (delta 54), reused 0 (delta 0)
Unpacking objects: 100% (60/60), done.
From git@github.com:companyX/projectX
 * branch            master     -> FETCH_HEAD
Merge made by recursive.
stuff                      |  165 ++++++++++++--------
stuff                      |   35 ++--
stuff                       |  107 ++++++++++---
stuff                       |  105 ++++++++++---
stuff             |   24 ++--
stuff               |    9 +-
stuff                   |   53 +++----
stuff            |   44 +++---
stuff              |   52 +++----
stuff |   32 +----
stuff          |    4 +-
 stuff             |  138 ++++++++---------
stuff     |   58 ++++----
stuff    |  115 ++++++++------
stuff          |    5 +-
stuff                       |   39 ++---
stuff                        |   28 ++--
 17 files changed, 560 insertions(+), 453 deletions(-)

ولكن بعد ذلك عندما أحاول القيام بما يلي:

$ git push upstream master
To git@github.com:companyX/projectX.git
 ! [rejected]        master -> master (non-fast forward)
error: failed to push some refs to 'git@github.com:companyX/projectX.git'

أي مساعدة سيكون موضع تقدير كبير!إذا كنت بحاجة إلى توضيح من فضلك اسأل، سأرد!

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

المحلول

عند القيام دفع، حاول تحديد refspec للسيد المنبع:

git push upstream upstreammaster:master

نصائح أخرى

جاريت هاردي على حق.أو قم أولاً بدمج تغييراتك مرة أخرى في الملف الرئيسي ثم حاول الدفع.بشكل افتراضي، git push يدفع جميع الفروع التي لها أسماء متطابقة على جهاز التحكم عن بعد - وليس غيرها.إذن هذان هما خياران أمامك - إما تحديده بشكل صريح كما قال جاريت أو الدمج مرة أخرى في فرع مشترك ثم الدفع.

لقد كان هناك حديث عن هذا في قائمة بريد Git ومن الواضح أن هذا السلوك ليس على وشك التغيير في أي وقت قريب - يعتمد العديد من المطورين على هذا السلوك في سير عملهم.

تحرير/توضيح

على افتراض الخاص بك upstreammaster الفرع جاهز للدفع ثم يمكنك القيام بذلك:

  1. سحب أي تغييرات من المنبع.

    $ git سحب سيد المنبع

  2. قم بالتبديل إلى فرعي الرئيسي المحلي

    $ بوابة الخروج الرئيسية

  3. دمج التغييرات في من upstreammaster

    $ git دمج upstreammaster

  4. ادفع تغييراتي للأعلى

    $ git دفع المنبع

شيء آخر أنت يمكن تريد أن تفعل قبل أن تدفع هو rebase تغييراتك على المنبع/الرئيسي بحيث تكون التزاماتك كلها معًا.يمكنك إما القيام بذلك كخطوة منفصلة بين رقم 1 ورقم 2 أعلاه (git rebase upstream/master) أو يمكنك القيام بذلك كجزء من السحب (git pull --rebase upstream master)

أولا، محاولة سحب من نفس refspec التي تحاول دفع ل.

إذا لم تنجح هذه الطريقة، يمكنك فرض git push باستخدام git push -f <repo> <refspec>، ولكن يجب توخي الحذر: يمكن أن يسبب هذا الأسلوب يشير إلى أن تحذف على مستودع البعيد

وأول استخدام

git pull https://github.com/username/repository master

وومحاولة ثم

git push -u origin master

هل المخزون الخاص بك في "المنبع" مستودع عارية؟ حصلت على نفس الخطأ، ولكن عندما أقوم بتغيير لالعارية أنها لم تعد يحدث.

إذا طلب دفعة ويظهر رفض، ثم حاول سحب أول من حساب جيثب الخاص بك ثم حاول دفع.

مثال:

في حالتي كان يعطي خطأ -

 ! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'https://github.com/ashif8984/git-github.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

و**** فما فعلته كان - ****

$ git pull
$ git push

وكان دفعت رمز بنجاح في حساب جيثب بلدي.

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