গিট পুশ ব্যর্থ হয়েছে, "নন-ফাস্ট ফরোয়ার্ড আপডেটগুলি প্রত্যাখ্যান করা হয়েছে"


99

আমি গিট অনলাইন এর মাধ্যমে আমার জিআইটি সংগ্রহস্থলগুলি সম্পাদনা করেছি। আমি আমার স্থানীয় কোড পরিবর্তনগুলি ধাক্কা দেওয়ার চেষ্টা করার পরে, আমি একটি ত্রুটি পেয়েছি:

Git push failed, To prevent from losing history, non-fast forward updates were rejected.

আমি এটা কিভাবে ঠিক করবো?


উত্তর:


137

প্রথমে পরিবর্তনগুলি টানুন:

git pull origin branch_name

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

4
এই আদেশটি আমাকে কাজ করেছে, তবে আমি জানতে চাই, কেন এটি হয় না git pull:? দূরবর্তী সমান origin, তাই এটি আসলে সঞ্চালিত হয়: git pull origin। এটি সব শাখা আপডেট করা উচিত নয়?
কার্লেন কিশমিরিয়ান

84

আপনি নিশ্চিত করতে চাইলে আপনার কমান্ড লাইনে - ফোর্স যুক্ত করুন। উদাহরণস্বরূপ ব্যবহার git push origin --force(কমান্ড লাইনের প্রস্তাব দিচ্ছি কারণ আপনি কমান্ড লাইনের সাহায্যে অন্যান্য ব্যবহারকারীর কাছ থেকে অনেক বেশি সমর্থন পাবেন Smart এছাড়াও স্মার্টজিটের মাধ্যমে এটিও সম্ভব নাও হতে পারে)) আরও তথ্যের জন্য এই সাইটটি দেখুন: http://help.github.com/ রিমোটস /


9
- ফোর্স আপনার সমস্যার সমাধান করবে তবে সম্ভাব্যভাবে অন্যকে ক্ষতি করে। এটি কেবলমাত্র যত্ন সহকারে (এবং জ্ঞান) ব্যবহার করা উচিত
স্কোয়েটবি

7
-1 কারণ জোর করে ধাক্কা দেওয়া বলতে সাধারণভাবে বলতে ভয়ঙ্কর ধারণা।
joshin4colours

6
+1 কারণ 5 জন @ joshin4colours -1 দিতে সম্মত হয়েছে। তবে জোর করে ধাক্কা দেওয়া সর্বদা সেরা ধারণা নয় (যা আপনার ধাক্কা অস্বীকার করে গিটটি পুরোপুরি স্পষ্ট করে তোলে), যদি এটি 100% সময়ের খারাপ ধারণা ছিল তবে বিকল্পটি বিদ্যমান থাকবে না। এখানে ম্যাট এর পরামর্শ অবশ্যই অন্যদের জন্য দরকারী হতে পারে।
ব্যবহারকারী 1271772

4
আপনি --forceযদি কেবল সেই শাখাটি ব্যবহার করেন তবে নিখরচায় ব্যবহার করুন । যদিও অন্য বিকাশকারীদের সাথে একটি শাখা ভাগ করার সময় এটি সমস্যা সৃষ্টি করে।
রবার্ট ব্রিসিটা

22

চাপ দেওয়ার আগে, রিবেস বিকল্পের সাথে একটি গিট টান করুন। এটি অনলাইনে করা পরিবর্তনগুলি (আপনার মূলতে) পাবেন এবং সেগুলি স্থানীয়ভাবে প্রয়োগ করবেন, তারপরে আপনার স্থানীয় পরিবর্তনগুলি এর উপরে যুক্ত করুন।

git pull --rebase

এখন, আপনি দূরবর্তী দিকে ধাক্কা দিতে পারেন

git push 

আরও তথ্যের জন্য গিট রিবেসটি ব্যাখ্যা করে দেখুন এবং অধ্যায় 3.6 গিট ব্রাঞ্চিং - রিবেসিং


4
আমার ক্ষেত্রে git pull --rebaseশেষ হয়There is no tracking information for the current branch. Please specify which branch you want to rebase against.
ট্রেজার্ড

17

আমি একই ত্রুটির মুখোমুখি হয়েছি, কমান্ডটিতে কেবল "--for" যুক্ত করুন , এটি কাজ করে

git push origin master --force

6
এর কি পরিণতি আছে?
jayunit100

8
অন্যের প্রতিশ্রুতি হারাতে।
জিওভান্নি টরাল্ডো

4
আমার অদ্ভুতের পরিস্থিতি ছিল যেখানে আমি ঠিক এটিই করতে চাইছিলাম ... সদ্য -নির্মিত একটি দূরবর্তী মাস্টার শাখার বিষয়বস্তুকে নতুন কিছু দিয়ে ফুটিয়ে তুলব। এটি আমার সমস্যার সমাধান করেছে। যদিও এটি সবার জন্য সমাধান নয়, --forceসহায়ক হতে পারে।
ব্র্যাড

4
আমি মনে করি না যে এই উত্তরটি 6 বার ভোট দেওয়া উচিত। এটি প্রদত্ত সমস্যার একটি বৈধ সমাধান, তবে, এই আদেশটি যে পরিস্থিতিতে কার্যকর হবে সে সম্পর্কে লেখক কিছুটা বর্ণনামূলক হতে পারতেন। যদি এটি লেখার পক্ষে মূল্যহীন তবে (ফোর্সটির কার্যকারিতা)
আইডেন স্ট্রিডম

5

আমারও একই সমস্যা ছিল
কারণটি ছিল, আমার স্থানীয় শাখাটি কোনওভাবে দূরবর্তী অংশটির কাছে ট্র্যাকিংটি হারিয়েছিল।

পরে

git branch branch_name --set-upstream-to=origin/branch_name
git pull

এবং মার্জিং বিরোধগুলি সমাধান করে, আমি ধাক্কা দিতে সক্ষম হয়েছি।


দেখে মনে হচ্ছে আপনি দূরবর্তী শাখায় পরিবর্তনগুলি মিস করেছেন
ওজমা

5

আপনি কমান্ডে --for-with-lease যোগ করতে পারেন , এটি কার্যকর হবে।

git push --force-with-lease

--ফোর্স ধ্বংসাত্মক কারণ এটি স্থানীয়ভাবে আপনার যা কিছু রয়েছে তা নিঃশর্তভাবে দূরবর্তী সংগ্রহস্থলের উপরে ওভাররাইট করে। তবে - বলপূর্বক-ইজারা নিশ্চিত করুন যে আপনি অন্যের কাজ ওভাররাইট না করে।

এখানে আরও তথ্য দেখুন ।


1

(এক) নেটবিন্স 7.1 এর সমাধান: একটি টান চেষ্টা করুন। এটি সম্ভবত ব্যর্থ হবে। এখন লগগুলি দেখুন (সেগুলি এখন আইডিইতে প্রদর্শিত হয়)। আরও এক / আরও লাইন আছে:

"এই ফাইলের কারণে টান ব্যর্থ হয়েছে:"

সেই ফাইলটি অনুসন্ধান করুন, এটি মুছুন (এর আগে একটি ব্যাকআপ তৈরি করুন)। সাধারণত এটি একটি .gitignore ফাইল, তাই আপনি কোড মুছবেন না। পুশটি আবার করুন। এখনই সবকিছু ঠিকঠাক করা উচিত।


1

ব্যবহার --rebaseবিকল্প আমার জন্য কাজ করেন।

  • git pull <remote> <branch> --rebase

তারপরে রেপোতে চাপ দিন।

  • git push <remote> <branch>

যেমন

git pull origin master --rebase

git push origin master


0

আমি একই সমস্যা আছে। আমি সমাধান করেছি

git checkout <name branch>
git pull origin <name branch>
git push origin <name branch>

4
ওপি স্থানীয় কোড পরিবর্তনগুলি ঠেলে দেওয়ার বিষয়ে বলেছে। checkoutএই পরিবর্তনগুলি ওভাররাইট করবে বা কমপক্ষে এগুলিকে ধাক্কা দেবে না।
ট্রেজার্ড

0

এটিই আমার পক্ষে কাজ করেছিল। এটি এখানে গিট ডকুমেন্টেশনে পাওয়া যাবে

আপনি যদি আপনার পছন্দসই শাখায় থাকেন তবে আপনি এটি করতে পারেন:

git fetch origin
# Fetches updates made to an online repository
git merge origin YOUR_BRANCH_NAME
# Merges updates made online with your local work

0

একই সমস্যাটি মোকাবিলা করে, এটি সমাধান করার জন্য, নিম্নলিখিত gitকমান্ডগুলি চালান ।

  • git pull {url} --rebase
  • git push --set-upstream {url} master

আপনি অবশ্যই প্রথমে গিথুব এ সংগ্রহস্থল তৈরি করেছেন।


0

কখনও কখনও, আপনার গিট থেকে টান দেওয়ার সময়, হেড আলাদা হয়ে যায়। কমান্ডটি লিখে আপনি এটি পরীক্ষা করতে পারেন:

git branch 
  • (হেড 8787704 থেকে বিচ্ছিন্ন)

    মাস্টার

    বিকাশ

আপনার শাখায় স্থানান্তর করা এবং আপনার নিজ নিজ শাখা থেকে একটি নতুন টান নেওয়া ভাল।

git checkout develop

git pull origin develop

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