আপনার শাখা 3 টি কমিট দ্বারা 'উত্স / মাস্টার' এর চেয়ে এগিয়ে


354

দৌড়ানোর সময় আমি নিম্নলিখিতগুলি পাচ্ছি git status

Your branch is ahead of 'origin/master' by 3 commits.

আমি অন্য কোনও পোস্টে পড়েছি এটি git pull --rebaseঠিক করার উপায়টি চালানো হচ্ছে তবে ঠিক কী পুনর্বাসন করা হবে, আমি কী ডেটা হারাব বা মাস্টারের সাথে সিঙ্ক করার এই সহজ উপায়?


18
আমি মনে করি না এটি একটি সদৃশ ... এই প্রশ্নটি এর অর্থ কী তা জিজ্ঞাসা করছে, অন্য প্রশ্নটি কীভাবে পরিবর্তনগুলি বাতিল করবেন তা জিজ্ঞাসা করছে।
পেঁয়াজজেকে

11
এত লোকের দ্বারা এটি কীভাবে নকল হিসাবে চিহ্নিত হয়েছিল? প্রশ্নটি স্পষ্টতই ইঙ্গিত করে যে ব্যক্তি তার পরিবর্তনগুলি আলগা করতে চায় না। তারা পরিবর্তন করেছে এবং বার্তা দ্বারা বিভ্রান্ত। তথাকথিত সদৃশ প্রশ্নটিতে ব্যক্তিটিকে তাদের পরিবর্তনগুলি আলগা করতে হবে।
ডেরেক গ্রেয়ার

4
আমাকে বলতে হবে যে উপরে
লিঙ্কিত

15
@ ডেরেকগ্রিয়ার: এটি কীভাবে নকল হিসাবে চিহ্নিত হয়েছিল? কারণ বেশিরভাগ লোকেরা যারা প্রশ্নগুলি সদৃশ হিসাবে চিহ্নিত করে তারা আসলে প্রশ্নটি পড়তে এবং বুঝতে পারা যায় না । যদি অতিমাত্রায় মিল রয়েছে তবে তারা এই সিদ্ধান্তে উপনীত হবে যে দু'টি একরকম, এবং এটি ওপি বা অন্যদের উপর নির্ভর করবে যারা প্রথমে স্পষ্ট হওয়া উচিত ছিল সাবধানতার সাথে পুনরাবৃত্তি করতে সময় নিতে ইচ্ছুক, যদি দুপ্পে শিকারীরা আসলে মনোযোগ দিয়েছিল।
আইকনোক্লাস্ট

6
^^^ যার অনুশীলনটি এসও, আইএমওকে হত্যা করছে।
গীক স্টকস

উত্তর:


766

আপনি সেই বার্তাটি পেয়েছেন কারণ আপনি আপনার স্থানীয় মাস্টারে পরিবর্তন করেছেন এবং আপনি এগুলিকে রিমোটে ঠেলেছেন না। এটি "সমাধান" করার জন্য আপনার কাছে বেশ কয়েকটি উপায় রয়েছে এবং এটি সাধারণত আপনার কার্যপ্রবাহটি কেমন দেখাচ্ছে তার উপর নির্ভর করে:

  • একটি ভাল ওয়ার্কফ্লোতে আপনার মাস্টারের রিমোট কপিটি ভাল হওয়া উচিত যখন আপনার স্থানীয় মাস্টারের অনুলিপিটি রিমোটের একটি অনুলিপি। এই কর্মপ্রবাহটি ব্যবহার করে আপনি আর কখনও এই বার্তা পাবেন না।
  • আপনি যদি অন্য কোনও উপায়ে কাজ করেন এবং আপনার স্থানীয় পরিবর্তনগুলি ধাক্কা দেওয়া উচিত তবে কেবল git push originধরে নেওয়া হবে যে এটি আপনার দূরবর্তী remote
  • যদি আপনার স্থানীয় পরিবর্তনগুলি খারাপ হয় তবে কেবল সেগুলি সরিয়ে দিন বা আপনার স্থানীয় মাস্টারকে রিমোটে পুনরায় সেট করুন git reset --hard origin/master

82
গিট রিসেট --হার্ড উত্স / মাস্টার হ'ল আমি যা খুঁজছিলাম। ধন্যবাদ।
ফ্লাক্সেনজাইন

4
@ আইবারবেউ আপনি আমার দিনটির সমাধান করেছেন ... গিট রিসেট - মূল উত্স / মাস্টার যা আমি সন্ধান করছি। + 1ed
রবি

75
এছাড়াও আপনি যে পরিবর্তনগুলি সরিয়ে git diff master origin/mastergit diff local remote
ফেলবেন

1
আমার কাছে প্রত্যন্ত উত্স / শাখায় স্থানীয় / মাস্টার রয়েছে যাতে এটি ব্যবহার করে git push origin master:branchফিরে আসে Everything up-to-date, এর পরে এক্স কমিট দ্বারা এগিয়ে যাওয়ার বার্তাটি চলে যায়।
fyrye

2
আমার সেখানে যা দরকার তা সর্বশেষ আমাকে পেয়ে গেল!
রায়ানজি

38

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

  • git push: আপনার পরিবর্তনগুলি রিমোটে সরান (দূরবর্তীটিতে ইতিমধ্যে অন্যান্য পরিবর্তনগুলি থাকলে এটি প্রত্যাখ্যান হতে পারে)
  • কিছুই করবেন না এবং কোডিং চালিয়ে যান, অন্য দিন সিঙ্ক করুন
  • git pull: দূরবর্তী থেকে পরিবর্তনগুলি (যদি থাকে) পান এবং সেগুলি আপনার পরিবর্তনগুলিতে মার্জ করুন
  • git pull --rebase: উপরের মতো, তবে দূরবর্তী পরিবর্তনের শীর্ষে আপনার কমিটগুলি পুনরায় করার চেষ্টা করুন

আপনি একটি শাস্ত্রীয় পরিস্থিতিতে রয়েছেন (যদিও সাধারণত আপনি বেশিরভাগ ওয়ার্কফ্লোতে মাস্টারকে নিয়ে খুব একটা কমিট করেন না)। আমি সাধারণত যা করবো তা এখানে: আমার পরিবর্তনগুলি পর্যালোচনা করুন। হয়তো একটি git rebase --interactiveবেশী যে স্তন্যপান ড্রপ, তাদের পুনর্বিন্যাস তাদের যৌক্তিক করতে তাদের উপর কিছু প্রসাধনী করতে। এখন এগুলি সাথে রিমোটে সরান git push। যদি এটি বাতিল হয়ে যায় কারণ আমার স্থানীয় শাখাটি আপ টু ডেট না: git pull --rebaseসর্বাধিক সাম্প্রতিক পরিবর্তনের শীর্ষে আমার কাজটি git pushআবার করতে।


আমি গিট টান --rebase ব্যবহার করেছি, তবে এটি এখন বলেছে যে আমি একটি প্রতিশ্রুতি দিয়ে এগিয়ে আছি
ফ্লাক্সেনজাইন

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

@ মার্টিএমসিফ্লাই এখানে কী চলছে তা দেখা মুশকিল। তুমি বলেছো ইতিমধ্যে ধাক্কা দিয়েছ? তাহলে কেন আপনি এখনও প্রতিশ্রুতিবদ্ধ হন যেগুলি মাস্টার না? আপনি কি বলতে চাইছেন your team lead merged to master? আপনি কি বলেন নি যে আপনি ইতিমধ্যে মাস্টারকে ঠেলে দিয়েছেন? অতিরিক্ত প্রতিশ্রুতিতে কী রয়েছে? git diff origin/masterআপনার স্থানীয় শাখাটি দূরবর্তী থেকে কীভাবে আলাদা হয় তা দেখার চেষ্টা করুন ।
বিকাল

1
সহায়তার জন্য ধন্যবাদ, দুঃখিত যদি আমি পরিস্থিতি ব্যাখ্যা করে কোনও খারাপ কাজ করি। তবে আমি যা খুঁজছিলাম তা হ'ল গিট রিসেট --হাড় উত্স / মাস্টার। তবে আপনার উত্তরটি +1 সহায়ক ছিল।
ফ্লাক্সেঞ্জাইন

আমি একটি শৈল এবং একটি শক্ত জায়গার মধ্যে আটকে আছে বলে মনে হচ্ছে, আমি পরিবর্তনগুলি করার চেষ্টা করেছি, তারপর গিট বলেছিল: আপনি 11 টি প্রতিশ্রুতিতে এগিয়ে রয়েছেন। আমাকে দূরবর্তী সংগ্রহস্থল আপডেট করার অনুমতি নেই, সুতরাং একটি ধাক্কা সম্ভব নয় possible "গিট টান" বলেছেন: ইতিমধ্যে আপ টু ডেট। সুতরাং আমি আপনার তৃতীয় পরামর্শটি চেষ্টা করেছিলাম, তবে গিট বলে: রিবেস দিয়ে টানতে পারে না: আপনার স্টেস্টেড পরিবর্তন নেই। দয়া করে প্রতিশ্রুতিবদ্ধ বা স্ট্যাশ করুন। দুহ, এভাবেই আমি এখানে প্রথম স্থান পেয়েছিলাম :-(
স্যান্ডার ডি জং

36

এই 4 টি সহজ কমান্ড ব্যবহার করুন

পদক্ষেপ 1 :git checkout <branch_name>

এটি এই শাখায় যেতে সুস্পষ্ট।

পদক্ষেপ 2 :git pull -s recursive -X theirs

দূরবর্তী শাখার পরিবর্তনগুলি গ্রহণ করুন এবং বিরোধ দেখা দিলে তাদের পরিবর্তনের সাথে প্রতিস্থাপন করুন। এখানে git statusআপনি যদি এমন কিছু পান তবে আপনার শাখা 3 টি কমিট দ্বারা 'উত্স / মাস্টার' এর চেয়ে এগিয়ে।

পদক্ষেপ 3 :git reset --hard origin/<branch_name>

পদক্ষেপ 4 :git fetch

আপনার শাখাটি পুনরায় সেট করুন।

উপভোগ করুন।


17

আমি বিটবকেটে একটি টানার অনুরোধটি মার্জ করার পরে এই সমস্যাটি জুড়ে এসেছিল।

করতে হয়েছিল

git fetch

এবং এটি ছিল।


2
আমি একটি বান্ডিল থেকে রেপো নিয়ে কাজ করছিলাম এবং একটি বর্তমান বান্ডেলে "গিট ফেচ" প্রয়োগ করে বার্তাটি থেকে মুক্তি পেতে সক্ষম হয়েছি। tnx!
মার্টিন মিজার

কেবলমাত্র পঠনযোগ্য পরীক্ষার জন্য আমার গিট স্ট্যাটাসটি দেখিয়েছিল যে আমি 2 জন আগেই কমিট করেছি, লগটি দেখতে যেমনটি দেখাচ্ছিল - সমস্ত উত্স অনুসারে কাজ করে। আমি গিট টানছিলাম এবং 5 টি কমিট এগিয়ে ছিলাম..ডব্লিউটিএফ ???? কেবলমাত্র স্থানীয় সূচিপত্রগুলি রিফ্রেশ করার জন্য আনতে হবে ... সমস্ত ভাল :)
ক্রিস রুটলেজ

12

সাধারণত আমার যদি করণীয় হয় তবে আমি যে মাস্টার থেকে আলাদা তার মধ্যে কমিটগুলি কি:

git rebase -i origin/master

এইভাবে আমি কমিটগুলি দেখতে এবং এটি ফেলে দেওয়ার বা বেছে নেওয়ার সিদ্ধান্ত নিতে পারি ...


এই নীচের উত্তরটি এখানে সমস্তভাবেই করা হয়েছিল যা আমার করা দরকার ছিল। আমি কীভাবে পার্থক্যটি সন্ধান করতে পারি তা বুঝতে পারি না এবং আমার সমস্ত বিভিন্ন git diff ...ম্যাজিক কাজ করবে না। যখন আমি এটি করেছি, এটি আমাকে noopএকমাত্র প্রতিশ্রুতি হিসাবে দিয়েছে এবং যখন আমি এটি স্বীকার করেছি, এখন আমার শাখাটি উত্স / মাস্টারের সাথে সুসংগত। সুতরাং দেখা যাচ্ছে যে কমিটগুলি উত্স / মাস্টার থেকে ভিন্ন ছিল বাস্তবে কিছুই ছিল না।
ফিলো ভাইভেরো

11

এই বার্তাটির gitঅর্থ এই যে আপনি আপনার স্থানীয় রেপোতে তিনটি কমিট করেছেন, এবং সেগুলি masterসংগ্রহস্থলে প্রকাশ করেন নি । যে জন্য কমান্ড চালানোর জন্য git push {local branch name} {remote branch name}

কমান্ডটি git pull(এবং git pull --rebase) অন্যান্য অবস্থার জন্য যখন আপনার স্থানীয় রেপোতে আপনার নেই এমন রিমোট রেপোতে প্রতিশ্রুতিবদ্ধ থাকে। --rebaseবিকল্প উপায়ে যে gitসরাইয়া কমিট আপনার স্থানীয় সরানো হবে, দূরবর্তী রেপো সাথে সুসংগত, এবং তারপর আবেদন করতে চেষ্টা আপনার তিনটি নতুন রাজ্য থেকে কমিট। দ্বন্দ্ব থাকলে এটি ব্যর্থ হতে পারে তবে এর সমাধানের জন্য আপনাকে অনুরোধ জানানো হবে। আপনি rebaseযদি কীভাবে দ্বন্দ্বগুলি ব্যবহার করে সমাধান করতে জানেন না git rebase --abortএবং আপনি দৌড়ানোর আগে এই রাজ্যে ফিরে পাবেন তবে আপনি এটিকে বাতিলও করতে পারেন git pull --rebase


7

যদি আপনার গিট বলে আপনি এগিয়ে প্রতিশ্রুতিবদ্ধ তবে ঠিক প্রথমে,

গিট ধাক্কা উত্স

আপনি রেপোতে আপনার সমস্ত সাম্প্রতিক কাজকে ঠেলে দিয়েছেন তা নিশ্চিত করার জন্য

তারপর,

গিট রিসেট --হাড় উত্স / মাস্টার

পুনরায় সেট করতে এবং রেপোর সাথে মিলিত হতে


4

আমি একবার বিটবকেটে একটি টানার অনুরোধটি মার্জ করার পরে আমার সাথে এটি ঘটেছিল।

আমার শুধু করণীয় ছিল:

git fetch

আমার সমস্যা সমাধান করা হয়েছিল। আশা করি এটা কাজে লাগবে!!!


0
$ git fetch

  - remote: Enumerating objects: 3, done.
  - remote: Counting objects: 100% (3/3), done.
  - remote: Compressing objects: 100% (3/3), done.
  - remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0


$ git pull 

   - Already up to date!
   - Merge made by the 'recursive' strategy.

পরিশেষে:

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