গিট পুশ "অ-ফাস্ট-ফরোয়ার্ড" প্রত্যাখ্যান করেছে


90

gitএকটি দলীয় পরিবেশে আমাদের কোড পরিচালনা করতে আমি বর্তমানে এটি ব্যবহারে মোটামুটি নতুন । আমার কিছু রিবিসিং সমস্যা ছিল এবং আমি এগুলি ব্যবহার করে ঠিক করেছিলাম

git checkout --ours filename.txt
git add filename.txt
git rebase --continue

এখন আমি আমার পরিবর্তনগুলি ধাক্কা দিতে চাই এবং তাই নিম্নলিখিত কমান্ডটি চালাচ্ছি

$ git push origin feature/my_feature_branch

আমাকে নিম্নলিখিত ত্রুটি দেয়:

To ssh://git@coderepo.com:7999/repo/myproject.git
 ! [rejected]        feature/my_feature_branch -> feature/my_feature_branch (non-fast-forward)
error: failed to push some refs to 'ssh://git@coderepo.com:7999/repo/myproject.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

ত্রুটি থেকে মুক্তি পেতে আমি কী করতে পারি?

পিএস: আমি --forceযতটা সম্ভব বিকল্পটি ব্যবহার করা এড়িয়ে চলেছি ।


উত্তর:


76

দেখে মনে হচ্ছে, যে কেউ আপনার শেষ মধ্যে নতুন করে ধাক্কা git fetchএবং git push। এক্ষেত্রে আপনাকে আপনার পদক্ষেপগুলি পুনরাবৃত্তি করতে হবে এবং my_feature_branchআরও একবার পুনর্বার প্রয়োজন ।

git fetch
git rebase feature/my_feature_branch
git push origin feature/my_feature_branch

git fetchআমি পরে পরিস্থিতি পরীক্ষা করার পরামর্শ দিই gitk --all


গিট পুলের উত্স মাস্টার সক্ষম করতে কী করবেন: মাস্টার যা মার্জ হওয়ার ক্ষেত্রে ডিফল্ট হওয়া উচিত। এটি কি একীভূত বিরোধ বা না। এটিই হ'ল একমাত্র প্রশ্ন।
ম্যাথটিক

24

সম্ভবত রিবেস বা কেউ নতুন পরিবর্তন ঠেকানোর আগে আপনি রিমোট পরিবর্তনগুলি আনেন নি (আপনি যখন রিবেসিং এবং চাপ দেওয়ার চেষ্টা করছেন)। এই পদক্ষেপগুলি ব্যবহার করে দেখুন:

#fetching remote 'feature/my_feature_branch' branch to the 'tmp' local branch 
git fetch origin feature/my_feature_branch:tmp

#rebasing on local 'tmp' branch
git rebase tmp

#pushing local changes to the remote
git push origin HEAD:feature/my_feature_branch

#removing temporary created 'tmp' branch
git branch -D tmp

এটি আমার সমস্যার সমাধান করে: যখন আমি আমার কোডটি প্রতিশ্রুতিবদ্ধ করি তখন আমি একটি পুনর্বাসনা করি (খুব দেরীতে, ইতিমধ্যে পরিবর্তনগুলি ছিল, প্রতিশ্রুতি দেওয়ার আগে এটি করা উচিত)। তারপরেও কোনও বিরোধ নেই, আমি ঠেলাতে পারিনি। উপরের যাদু প্রয়োগ করার পরে, এটি কাজ করে। ধন্যবাদ
জিং লি

19

আমার এই সমস্যা ছিল! আমি চেষ্টা করেছি: গিট ফেচ + গিট মার্জ, কিন্তু সমাধান হয়নি! আমি চেষ্টা করেছি: গিট টানুন, এবং সমাধানও করবেন না

তারপরে আমি এটি চেষ্টা করেছি এবং আমার সমস্যার সমাধান করেছি (ইঞ্জিনিয়ারের উত্তরের অনুরূপ):

git fetch origin master:tmp
git rebase tmp
git push origin HEAD:master
git branch -D tmp

7
এটি আমাকে বিভ্রান্ত করেছে, আমি স্টাফকে সরাসরি মাস্টারের দিকে ঠেলে দিয়েছিলাম এবং পুরো দিন থেকেই মোতায়েনের দিকে ঠেলে দিয়েছি ... এবং সবাই হতাশ হয়েছেন .... দুর্দান্ত টিপস!
মাইক কিউ

6
কাউকে বিপজ্জনক সরঞ্জাম দেওয়ার আগে সম্ভবত আপনি সংক্ষেপে কী করছেন তা ব্যাখ্যা করতে চান।
মিরভ - ম্যাট

10

আমারও একই সমস্যা ছিল এবং আমি এটি দিয়ে সমাধান করেছি: git pull origin


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

7

আমি পার্টিতে দেরি করেছি তবে আমি গিথব সহায়তা পৃষ্ঠায় কিছু দরকারী নির্দেশাবলী পেয়েছি এবং আমি সেগুলি এখানে ভাগ করে নিতে চাই to

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

যদি অন্য কোনও ব্যক্তি আপনার মতো একই শাখায় ঠেলাঠেলি করে, গিট আপনার পরিবর্তনগুলি ধাক্কা দিতে সক্ষম হবে না:

$ git push origin master
To https://github.com/USERNAME/REPOSITORY.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/USERNAME/REPOSITORY.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.

আপনি স্থানীয়ভাবে যে পরিবর্তনগুলি করেছেন সেগুলি দিয়ে দূরবর্তী শাখায় করা পরিবর্তনগুলি আনয়ন এবং মার্জ করে আপনি এটি ঠিক করতে পারেন:

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

অথবা, আপনি কেবল git pullএকবারে দুটি কমান্ড সম্পাদন করতে ব্যবহার করতে পারেন:

$ git pull origin YOUR_BRANCH_NAME
# Grabs online updates and merges them with your local work

4

এই আদেশ ব্যবহার করে দেখুন

$ git push -f -u origin <name of branch>

অর্থাত্ $ git push -f -u origin master


এটি আমার ক্ষেত্রে কাজ করেছিল যখন অন্যরা তা করেনি। কখনও কখনও আপনাকে গিট

1

ভাগ করা স্থানীয় সংগ্রহস্থলে লক লিখুন

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


1

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

 git branch --set-upstream-to=origin/feature/my-current-branch feature/my-current-branch

0

গ্রহণে নিম্নলিখিতটি করুন:

জিআইটি সংগ্রহস্থল> রিমোটস> উত্স> ডান ক্লিক করুন এবং আনুন বলে

জিআইটি সংগ্রহস্থল> রিমোট ট্র্যাকিং> আপনার শাখাটি নির্বাচন করুন এবং মার্জ করুন বলুন

প্রজেক্টে যান, আপনার ফাইলে ডান ক্লিক করুন এবং উজান থেকে বলুন।


0
  1. কোডটি একটি নতুন শাখায় সরান - গিট শাখা-বি টিএমপি_ব্র্যানচিউভান্টমারিন
  2. আপনি যে শাখায় মার্জ করতে চান তা পরিবর্তন করুন - গিট চেকআউট মাইকুল্যাঞ্চ
  3. আপনি যে শাখায় মার্জ করতে চান তা পুনরায় সেট করুন - গিট শাখা পুনরায় সেট করুন - হেড হেড
  4. tmp শাখাটিকে কাঙ্ক্ষিত শাখায় মার্জ করুন - গিট শাখাটি মার্জ করুন tmp_branchyouant खेळाडू
  5. উত্স দিকে ধাক্কা


-1
  1. স্থানীয় প্রতিশ্রুতি পূর্বাবস্থায় ফেরান। এটি কেবল প্রতিশ্রুতিটি পূর্বাবস্থায় ফিরে আসবে এবং কার্যকরী অনুলিপিগুলিতে পরিবর্তনগুলি সংরক্ষণ করবে
git reset --soft HEAD~1
  1. সর্বশেষ পরিবর্তনগুলি টানুন
git pull
  1. এখন আপনি সর্বশেষ কোডের শীর্ষে আপনার পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ করতে পারেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.