প্রত্যাখ্যাত মাস্টার -> মাস্টার (নন-ফাস্ট-ফরোয়ার্ড)


218

আমি আমার প্রকল্পটি (নতুন ভাণ্ডারের সমস্ত ফাইল) ধাক্কা দেওয়ার চেষ্টা করছি। আমি পদক্ষেপগুলি অনুসরণ করি তবে আমি যখন চাপ দেই তখন আমি git push -u origin masterএই ত্রুটিটি পাই:

! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:asantoya/projectnewbies.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git push --help' for details.

আমি এই ত্রুটিটি বহুবার পেয়েছি এবং কী করব তা অনুমান করতে পারি না।


4
আপনি যদি নিশ্চিত হন যে আপনার স্থানীয় মাস্টারের আপনি রিমোটে সর্বশেষতম পরিবর্তনগুলি চান তবে গিট পুশ করুন
ফোর্স

34
git push --force <remote_repository>আমার জন্য কাজ।
5:54

@ সর্টর - আমি সারাদিন একই সমস্যায় পড়েছি, এটি আমাকে সাহায্য করেছে !! ধন্যবাদ. তবে সমস্যাটি প্রথম স্থানে কেন ঘটেছিল এবং কেন স্থিররূপে কাজ করেছিল সে সম্পর্কে এটি কোনও ব্যাখ্যা দেয় না।
পদাবন

1
@ পিএমআর, কেবল ঝাঁকুনির সাথে জিজ্ঞাসা করুন যে ওপি "ত্রুটি বার্তাটি পড়ে" কোনওভাবে সহায়তা করে না। স্পষ্টতই, ত্রুটি বার্তাটি ওপি-তে কোনও তাত্পর্যপূর্ণ হয়নি, যেমন এটি আমার কাছে কোনও বার্তা দেয়নি বা তাঁর পদকে সমর্থনকারী অন্যান্য people 66 জনকে। স্নারকি, সাদাসিধে যদিও লোককে একেবারেই সহায়তা করে না।
পদাওয়ান

3
@ পাদওয়ান আপনি আরও লক্ষ্য করবেন যে এই "ছদ্মবেশী, তত্ক্ষণাত বুদ্ধিমান ব্যক্তি" এই প্রশ্নের স্বীকৃত উত্তর সরবরাহ করেছে এবং 72২ জন (সম্ভবত আপনি সহ) এটি সহায়ক বলে মনে করেছেন। আমি দুঃখিত যে আমার মন্তব্যটি অহংকারী হিসাবে এসেছিল, তবে আপনি যদি আমার পেশাগত প্রসঙ্গেও প্রশ্নটি জিজ্ঞাসা করে থাকেন তবে এটি আমার প্রথম প্রশ্ন হত। কখনও কখনও থামানো এবং ত্রুটি বার্তাটি সাবধানে পড়তে এক মিনিট সময় নেওয়া আশ্চর্য হয়ে যায়। আমি যখন প্রথমবারের মতো ত্রুটিটি দেখলাম তখন আমি আমার জন্য করেছি।
বিকাল

উত্তর:


160

যেমন ত্রুটি বার্তাটি বলে: git pullআপনি চেষ্টা করার আগে git push। সম্ভবত আপনার স্থানীয় শাখাটি আপনার ট্র্যাকিং শাখার সাথে সিঙ্কের বাইরে।

প্রকল্পের নিয়ম এবং আপনার কর্মপ্রবাহের উপর নির্ভর করে আপনি ব্যবহার করতেও পারেন git pull --rebase


1
এটি আমাকে এই অটো মার্জিং README.md দেখায় স্বয়ংক্রিয়ভাবে মার্জ ব্যর্থ হয়েছে; বিবাদগুলি স্থির করুন এবং তারপরে ফলাফলটি প্রতিশ্রুতিবদ্ধ।
Asantoya17

1
@ Asantoya17 আপনার পরিবর্তনগুলির সাথে দূরবর্তী মাস্টার বিরোধে যে পরিবর্তনগুলি হয়েছে ফাইলটি পর্যালোচনা করুন এবং সেগুলি পর্যালোচনা করুন। তারপরে সমাধানের ফলাফলগুলি প্রতিশ্রুতিবদ্ধ। দয়া করে একটি টিউটোরিয়াল বা বই পান বা কমপক্ষে বার্তাগুলি পড়ুন।
22:30 pm

1
টান মানে কি? আপনাকে কোনও ফাইল ধাক্কা দিতে বা সংগ্রহস্থলের ওয়েবসাইট থেকে একটি ফাইল আনতে এবং ডাউনলোড করতে সক্ষম করে? (যেমন বিট বালতি)
ডেভিড ডিমালান্টা

4
@AndrewS git push --force origin master। আপনি যদি আপনার জীবনে একবারে এই জাতীয় সমস্যায় পড়ে থাকেন তবে আপনার প্রকল্পের কর্মপ্রবাহ ভেঙে যাবে। বৈশিষ্ট্যগুলি শাখাগুলিতে বিকাশ করা উচিত এবং দ্রুত-ফরওয়ার্ডিং ছাড়াই একত্রীকরণ করা উচিত এবং যদি কোনও বৈশিষ্ট্য "ব্যর্থ" হয়ে থাকে তবে আপনার মার্জ কমিটটি ফিরিয়ে নেওয়া উচিত (বিশেষত আপনি কোনও বৈশিষ্ট্যকে মাস্টার হিসাবে মার্জ করার আগে প্রথমে আপনার ইন্টিগ্রেশন শাখায় পরীক্ষা করে নেবেন)। যদিও গ্রহন সম্পর্কে কোনও ধারণা নেই।

1
ত্রুটিটি যদি রিপোর্ট করে তবে কী করবেন git pull origin trunk:master?
অ্যান্ড্রি 20

175

বিজ্ঞপ্তি: এটি কখনও গিটের প্রস্তাবিত ব্যবহার নয়। এটি রিমোটে পরিবর্তনগুলি ওভাররাইট করবে। কেবলমাত্র এটি করুন যদি আপনি 100% জানেন যে আপনার স্থানীয় পরিবর্তনগুলি দূরবর্তী মাস্টারে চাপানো উচিত।

এটা চেষ্টা কর: git push -f origin master


47
না, এই চেষ্টা করবেন না। থেকে git help push: "এর ফলে দূরবর্তী সংগ্রহস্থলটি কমিটগুলি হারাতে পারে; যত্ন সহ এটি ব্যবহার করুন।"
jcsahnwaldt মনিকা

7
অবশ্যই এটি করবেন না
Lluís

14
এটি আমার জন্য কাজ করেছে। আমি অনুভব করেছি যে এটি ঠিক আছে কারণ গিথুব সম্পর্কে আমার একমাত্র প্রতিশ্রুতি ছিল নতুন রেপো দিয়ে তৈরি। কোনও প্রকল্প শুরুর পরে এটি ব্যবহার না করা সম্ভবত একটি ভাল ধারণা।
ম্যাথিউ মুর

1
আপনি যদি সরবরাহ সরবরাহের উদ্দেশ্যে তৈরি করা একটি রেপো আপডেট করতে চান তবে কার্যকর হতে পারে (তাই দূরবর্তী দিকে কোনও নতুন পরিবর্তন হয়নি)
হাইবুক

আমি যেমন এটি একটি প্রতিশ্রুতিবদ্ধ করেছি ঠিক তেমনই ব্যবহার করেছি, গিটহাবের সাথে সিঙ্ক করেছি, তারপরে আমি আশা করি যে আমি সেই প্রতিশ্রুতিতে আরও একটি ফাইল যুক্ত করেছি। সুতরাং আমি এটিকে স্থানীয়ভাবে পূর্বাবস্থায় ফেলেছি, গিটহাব থেকে এটি সাফ করার জন্য উপরের কমান্ডটি কার্যকর করেছি, আবার স্থানীয়ভাবে প্রতিশ্রুতিবদ্ধ করেছি, তারপরে সিঙ্ক করেছি। এখন সব ভাল! মনে মনে, আমি জানতাম যে এই শাখায় অন্য কোনও প্রতিশ্রুতিবদ্ধ হয়নি।
zeMinimalist

18

এই আদেশ আমার জন্য ভাল কাজ করে

git push -f origin master

3
এই কমান্ডটি ব্যবহার করার আগে সতর্ক হন। এই আদেশটি ব্যবহার করে আপনি আপনার অতীতের সমস্ত কমিট হারাবেন।
twenk11k

না-এর অর্থ জোর ধাক্কা
maheshmnj

@ maheshmnj হ্যাঁ!
পরীক্ষার্থী

15

আমি এই ত্রুটিটি সবে পেয়েছি।

আমি আমার স্থানীয় গিট সংগ্রহস্থল তৈরির পরে একটি গিথুব সংগ্রহশালা তৈরি করেছি যাতে গিথুবকে ধাক্কা দেওয়ার আগে আমার স্থানীয় পরিবর্তনগুলি গ্রহণ করা দরকার। এই ক্ষেত্রে একমাত্র পরিবর্তনটি ছিল রিথমে ফাইল ithচ্ছিক পদক্ষেপ হিসাবে তৈরি যখন গিথুব সংগ্রহস্থল তৈরি করার সময়।

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

প্রকল্প গিথুব পৃষ্ঠায় এখান থেকে সংগ্রহস্থল URL পাওয়া গেছে:

এখানে চিত্র বর্ণনা লিখুন

আমি তখন পুনরায় সূচনা (এটি প্রয়োজন হতে পারে না)

git init
git add .
git commit -m "update"

তারপরে চাপ দিন:

git push

3
এই উত্তরটি আসল কেস দৃশ্যের প্রতিফলন করে।
kta

9

আমি গিথুবে নতুন রেপো তৈরি করেছি এবং আমারও একই সমস্যা ছিল, তবে টান দেওয়ার সময় এটিতেও সমস্যা ছিল, তাই এটি আমার পক্ষে কাজ করেছিল।

তবে এটি रिपোসে পরামর্শ দেওয়া হয় না যে এর মধ্যে ইতিমধ্যে অনেকগুলি কোড রয়েছে কারণ এটি সবকিছু গোলমাল করতে পারে

git push origin master --force

এই উত্তরটি ইতিমধ্যে দেওয়া হয়েছে: stackoverflow.com/a/16374574/1771479 , এবং করার পরামর্শ দেওয়া হয়নি।
18 ই

9

সতর্কতা:

' git pull' এর জন্য যাওয়াই সর্বদা সমাধান নয়, তাই সাবধান থাকুন। আপনি যদি ইচ্ছাকৃতভাবে আপনার সংগ্রহস্থলের ইতিহাস পরিবর্তন করে থাকেন তবে আপনি এই সমস্যার মুখোমুখি হতে পারেন (যে প্রশ্নটিতে উল্লেখ করা হয়েছে) face সেক্ষেত্রে গিট আপনার রিমোট রেপোতে নতুন পরিবর্তনগুলির সাথে ইতিহাসের পরিবর্তনগুলিকে বিভ্রান্ত করছে। সুতরাং, আপনার পক্ষে যাওয়া উচিত git push --force, কারণ কল git pullকরা আপনার ইতিহাসে করা সমস্ত পরিবর্তনকে ইচ্ছাকৃতভাবে পূর্বাবস্থায় ফিরিয়ে আনবে।


8

যদি git pullসহায়তা না করে তবে সম্ভবত আপনি আপনার পরিবর্তনগুলিকে (এ) ঠেলে দিয়েছেন এবং তার পরে git commit --amendআরও কিছু পরিবর্তন যুক্ত করেছিলেন (বি)। অতএব, গিট মনে করে যে আপনি ইতিহাসটি হারাতে পারেন - এটি বি থেকে এ-এর সমস্ত পরিবর্তন থাকা সত্ত্বেও এটি একটি পৃথক অঙ্গীকার হিসাবে ব্যাখ্যা করে

             B
            /
        ---X---A

যদি কেউ পরে রেপো পরিবর্তন না করে Aতবে আপনি এটি করতে পারেন git push --force

তবে Aঅন্য ব্যক্তির পরে যদি কোনও পরিবর্তন হয় :

             B
            /
        ---X---A---C

আমি তোমাদের কাছ থেকে রি-বেসের ফলে হবে যে ব্যক্তি পরিবর্তন Aকরতে B( C-> D)।

             B---D
            /
        ---X---A---C

অথবা ম্যানুয়ালি সমস্যার সমাধান করুন। কীভাবে করব তা আমি ভাবিনি।


7

এই আদেশটি ব্যবহার করুন:

git pull --allow-unrelated-histories <nick name of repository> <branch name>

মত:

git pull --allow-unrelated-histories origin master

প্রকল্পগুলির কোনও সাধারণ পূর্বপুরুষ না থাকলে এই ত্রুটি ঘটে।


7
git push -f origin master

ব্রুট ফোর্স ব্যবহার করুন ;-) সম্ভবত আপনি গিটে রেপো তৈরি করার আগে আপনি তৈরি একটি স্থানীয় ফোল্ডার যুক্ত করার চেষ্টা করছেন।


2
এটি সহ যে কোনও এবং প্রতিটি উত্তরের একটি সতর্কতা দেওয়া উচিত।
ডি বেন নোবল

1
আমি এটি চেষ্টা করেছিলাম এবং এটি গিটহাবের প্রতি আমার প্রচুর প্রতিশ্রুতি ব্যয় করেছিল যা আমাকে রেপোর আরেকটি স্থানীয় ক্লোন থেকে পুনরুদ্ধার করতে হয়েছিল। বিপজ্জনক।
পাফলো

6

এটি কারণ আপনি আপনার মাস্টারের কিছু পরিবর্তন করেছেন তাই প্রকল্পটি আপনাকে প্রথমে টানতে বলে। আপনি যদি এটিকে যাইহোক ঠেলাঠেলি করতে চান তবে টাইপ করে আপনি জোর শক্তি ব্যবহার করতে পারেন:

git push -f origin master

আপনার পরিবর্তনগুলি প্রথমে প্রতিশ্রুতিবদ্ধ মনে রাখবেন:

git add .
git commit -m "Your commit message"


4

আপনার করা দরকার

git branch

যদি আউটপুটটি এমন কিছু হয়:

* (no branch)
master

তাহলে কর

git checkout master

নিশ্চিত হয়ে নিন যে আপনার কোনও মুলতুবি শুল্ক নেই কারণ চেক আউট সমস্ত অ-প্রতিশ্রুতিবদ্ধ পরিবর্তনগুলি হারাবে।


4

! [প্রত্যাখ্যান] মাস্টার -> মাস্টার (দ্রুত-নন-ফরোয়ার্ড)

আতঙ্কিত হবেন না, এটি ঠিক করা অত্যন্ত সহজ। আপনাকে যা করতে হবে তা হল একটি টান দেওয়া এবং আপনার শাখাটি দ্রুত এগিয়ে যাবে:

it গিট টান মাইরেপো মাস্টার

তারপরে আপনার ধাক্কা আবার চেষ্টা করুন এবং সবকিছু ঠিকঠাক হওয়া উচিত:

it গিট পুশ গিথুব মাস্টার


4

আমি যখন বিকাশকারী শাখায় ছিলাম তখন আমার সাথে এটি ঘটেছিল এবং আমার মাস্টার শাখা সর্বশেষ আপডেটের সাথে নেই।

সুতরাং যখন আমি বিকাশকারী শাখা থেকে ধাক্কা দেওয়ার চেষ্টা করেছি তখন আমার সেই ত্রুটি হয়েছিল।

আমি মাস্টার শাখা, গিট টানতে স্যুইচ করে এটি ঠিক করেছি, তারপরে শাখা এবং গিট পুশ বিকাশ করতে ফিরে যেতে পারি।

$ git fetch && git checkout master
$ git pull
$ git fetch && git checkout develop
$ git push

3

ডেভলপমেন্ট মেশিনে আমার এই সমস্যা ছিল। devশাখা জরিমানা ঠেলাঠেলি হলেও masterশাখা আমাকে দিয়েছে (যখন git pushযখন হচ্ছে ing devশাখা):

! [rejected]        master -> master (non-fast-forward)

সুতরাং আমি চেষ্টা করেছি:

git checkout master
git pull

যা আমাকে দিয়েছে:

You asked me to pull without telling me which branch you
want to merge with, and 'branch.master.merge' in
your configuration file does not tell me, either.

আমি জানতে পারি যে মাস্টার শাখাটি অনুপস্থিত ছিল .git/configএবং যুক্ত করেছে:

[branch "master"]
    remote = origin
    merge = refs/heads/master

এরপরে git pushশাখায়ও সূক্ষ্মভাবে কাজ করে dev


2

আমার রিমোট স্থানীয় সাথে সিঙ্ক ছিল না তাই এটি আমার জন্য কাজ করেছিল

git pull --rebase

এবং নিশ্চিত হয়ে নিন যে আপনি যখন git pullআবার এটি করবেন তখনই এটি ইতিমধ্যে আপ টু ডেট say

ধরে নিচ্ছি আপনি ইতিমধ্যে আছে git remote add origin remote repository URL

করা

`git push origin master`  

স্ক্রিনশট সব বলে এখানে চিত্র বর্ণনা লিখুন

বিকল্পভাবে আপনি এটি করতে পারেন

  1. গিট স্ট্যাশ (অস্থায়ীভাবে নিরীক্ষণ কাজের দোকানগুলি)
  2. গিট টান (আপনার স্থানীয় এবং দূরবর্তী সিঙ্কে তৈরি করুন)
  3. গিট স্ট্যাশ পপ (আপনার আপত্তিবিহীন পরিবর্তনগুলি ফিরিয়ে আনুন)
  4. গিট ঠেলা

1

আমি ইস্যু হিসাবে একই ছিল। আমি গিট টোটোইস ব্যবহার করি। শুধু ডান ক্লিক করুন -> টোটোজিগিট -> পরিষ্কার করুন। এখন আপনি গিথুবকে ঠেলে দিতে পারেন এটি আমার সাথে ভাল কাজ করেছে: ডি


1

এটি কারণ আপনি এর মাস্টারে বিরোধী পরিবর্তন করেছেন। এবং আপনার সংগ্রহস্থল সার্ভারটি আপনাকে এই শব্দগুলির সাথে বলতে সক্ষম হয় না, সুতরাং এটি এই ত্রুটিটি দেয় কারণ এটি আপনার পক্ষে এই দ্বন্দ্বগুলি মোকাবেলা করার বিষয় নয়, তাই তিনি আপনাকে এটি নিজেই করতে বলছেন। যেমন?

1- git pull এটি আপনার কোডটিকে আপনার সংগ্রহস্থল থেকে আপনার সাইট মাস্টারের কোডে একীভূত করবে। সুতরাং বিবাদগুলি দেখানো হয়েছে।

2- এই manualemente দ্বন্দ্ব চিকিত্সা।

3-

git push origin master

এবং প্রেস্টো, আপনার সমস্যাটি সমাধান করা হয়েছে।


0

কেবলমাত্র আমি এই সমস্যার সমাধান করতে পেরেছি তা হ'ল স্থানীয় এবং গিট রেপো মোছা এবং উভয় প্রান্তে আবার একই তৈরি করা। আপাতত ঠিকঠাক কাজ করে।


আমি সর্বদা ড্রপবক্সে আমার গিট রেপোর একটি ব্যাকআপ রাখি। এইভাবে আমাকে স্থানীয় রেপো মুছতে হবে না, পরিস্থিতি দেখা দিলে আমি ড্রপবক্স থেকে প্রাসঙ্গিক ডিরেক্টরিগুলি অনুলিপি করে আটকান।
ইগোরগানাপলস্কি

0

হিরকুতে চাপ দেওয়ার সময় কারও যদি এই ত্রুটি থাকে তবে কেবল 'উত্স'টিকে' হিরকু 'এর সাথে প্রতিস্থাপন করুন: গিট পুশ-হে হেরকু মাস্টার



0

এটি রেপোর নাম দেওয়ার সময় কিছু নামের ত্রুটির কারণেও হতে পারে। উপরের উত্তরগুলির মধ্যে যদি কোনও কাজ না করে থাকে তবে এটি আমার পক্ষে কাজ করেছে:

সেই রেপো মুছুন এবং একটি নতুন তৈরি করুন এবং নীচের আদেশগুলি আবার চেষ্টা করুন:

cd 'Local Directory Path'
git remote add origin *your_git_name.git*
git push -u origin master

যদি যুক্ত শোগুলি ইতিমধ্যে বিদ্যমান থাকে তবে পরিবর্তে এটি ব্যবহার করুন:

git remote set-url origin *your_git_name.git*
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.