গিট স্ট্যাশ পপটি পূর্বাবস্থায়িত করুন যা মার্জ সংঘাতের ফলস্বরূপ


517

আমি আমার কোডবেসে পরিবর্তন আনতে শুরু করেছিলাম, বুঝতে পারি না যে আমি কোনও পুরানো বিষয়ের শাখায় আছি। তাদের স্থানান্তর করতে, আমি তাদের স্ট্যাশ করতে চেয়েছিলাম এবং তারপরে তাদের মাস্টার ছাড়াই একটি নতুন শাখায় প্রয়োগ করতে পারি। আমি git stash popএই নতুন শাখায় ওয়ার্ক-ইন-প্রগ্রেস পরিবর্তনগুলি স্থানান্তর করতাম , ভুলে গিয়েছিলাম যে নতুন শাখাটি তৈরির আগে আমি নতুন পরিবর্তনগুলি টানিনি pulled এর ফলে একত্রীভূত সংঘাতের সৃষ্টি হয়েছে এবং আমার পরিবর্তনগুলির একটি পরিষ্কার সংশ্লেষ হারিয়েছে (যেহেতু আমি পপ ব্যবহার করেছি)।

আমি যখন নতুন শাখাটি সঠিকভাবে পুনরায় তৈরি করলাম, আমি কীভাবে আমার স্ট্যাশড পরিবর্তনগুলি সঠিকভাবে প্রয়োগ করতে পারি?

উত্তর:


653

দেখা যাচ্ছে, গিট যথেষ্ট পরিমাণে স্মার্ট যাতে এটি পরিষ্কারভাবে প্রয়োগ না করা হয় তবে স্ট্যাশ না ফেলে। আমি নিম্নলিখিত পদক্ষেপগুলি দিয়ে কাঙ্ক্ষিত অবস্থায় যেতে সক্ষম হয়েছি:

  1. মার্জ সংঘাতগুলি আনস্টেজ করতে: git reset HEAD .(পেছনের বিন্দুটি নোট করুন)
  2. সংঘাতযুক্ত মার্জটি সংরক্ষণ করতে (কেবলমাত্র ক্ষেত্রে): git stash
  3. মাস্টারে ফিরে যেতে: git checkout master
  4. সর্বশেষ পরিবর্তনগুলি টানতে: git fetch upstream; git merge upstream/master
  5. আমার নতুন শাখা সংশোধন করতে: git checkout new-branch; git rebase master
  6. সঠিক স্ট্যাশেড পরিবর্তনগুলি প্রয়োগ করার জন্য (এখন স্ট্যাকের ২ য় বার): git stash apply stash@{1}

14
দুর্দান্ত ধন্যবাদ! # 6 সত্যিই উত্তরটি আমি সন্ধান করছি। git stash drop# 2 থেকে অযাচিত স্ট্যাশ থেকে মুক্তি পাওয়ার শেষ পদক্ষেপ হিসাবে একটি যুক্ত করতে পারে।
অস্টিনমার্টন

1
যদি সেখানে আলাদা করা হয়েছে পাথ # 2 কাজ করবে না এটা পরিবর্তে আউটপুট ত্রুটি এখানে বর্ণিত হবে: stackoverflow.com/questions/5483213/...
Étienne

5
সম্পূর্ণ সত্য নয় - গিট পরিষ্কারভাবে প্রয়োগ করতে ব্যর্থ হলে স্ট্যাশ তালিকায় স্ট্যাশ রাখবে। এই নথিগুলি সম্পর্কে এগুলি দেখুন git stash pop: "রাষ্ট্র প্রয়োগ প্রয়োগের সাথে বিরোধগুলির সাথে ব্যর্থ হতে পারে; এক্ষেত্রে, এটি স্ট্যাশ তালিকা থেকে সরানো হয় না You আপনাকে হাত দ্বারা দ্বন্দ্বগুলি সমাধান করতে হবে এবং git stash dropপরে নিজে নিজে কল করতে হবে ।" ( git-scm.com/docs/git-stash )
ক্যারোলিন কনওয়ে

4
এই উত্তর এবং প্রশ্নটি ঠিক একই মুহুর্তে কীভাবে পোস্ট করা হবে তা অবাক করুন
-এ কল করুন -

13
@ কল-মি এটি এমন কিছু যা আমার মনে হয় লোকেরা আসলে আরও বেশি বার করা উচিত! "একটি প্রশ্ন জিজ্ঞাসা করুন" ফর্মটিতে কীভাবে একটি চেকবাক্স রয়েছে তা লক্ষ্য করুন যে আসুন আপনি নিজের ফর্মটির একই ফর্মটিতে উত্তর দিন :)। আমার মাঝে মাঝে এটি ঘটে যখন আমি কোনও প্রশ্ন লেখার প্রক্রিয়ায় যা আমাকে থামিয়ে দিচ্ছে, কিন্তু স্ট্যাকওভারফ্লোকে ভাল করার জন্য প্রশ্নটি টিউন করার চেষ্টা করার পরে আমি সমাধানটি বের করেছিলাম। এটি কিছুক্ষণ আগে ছিল, সুতরাং আমি এখানে মনে করি না যে ঘটনাটি এখানে ছিল তবে আমি অনুমান করছি যা ঘটেছে।
আকজয়

339

ভাগ্যক্রমে git stash popকোনও সংঘাতের ক্ষেত্রে স্ট্যাশ পরিবর্তন হয় না !

তাই উদ্বিগ্ন হওয়ার জন্য কিছুই নেই, আপনার কোডটি পরিষ্কার করুন এবং আবার চেষ্টা করুন।

বলুন যে আপনার কোডবেস আগে পরিষ্কার ছিল, আপনি আবার সেই অবস্থায় ফিরে যেতে পারেন: git checkout -f
তারপরে আপনার ভুলে যাওয়া জিনিসগুলি করুন, উদাহরণস্বরূপ git merge missing-branch
, কেবলমাত্র git stash popআবার গুলি চালানো হবে এবং আপনি একই স্ট্যাশ পাবেন, যা আগে বিরোধিত হয়েছিল।

দৃষ্টি আকর্ষণ: স্ট্যাশ নিরাপদ, তবে কার্যকারী ডিরেক্টরিতে বিনা অনুমতিতে পরিবর্তনগুলি করা হয় না। তারা গণ্ডগোল করতে পারে।


16
আমি যা বুঝতে পারি তা হ'ল আপনি কেবল পরিষ্কার এবং আবার পপ করতে পারেন তবে আপনি এটিকে পূর্বাবস্থায় ফেরাতে পারবেন না । যদি পপটি অন্য অমীমাংসিত পরিবর্তনের সাথে মিশে যায় তবে আপনাকে ম্যানুয়ালি পরিষ্কার করতে হবে।
haridsv

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

এটা আমার জন্য ছিল না। আমি git stash popএটিকে স্বয়ংক্রিয়ভাবে মার্জ করার চেষ্টা করেছে, দ্বন্দ্ব করেছে এবং এটি রেখে দিয়েছি ।
ট্রেভর হিকি

1
@ ট্র্যাভের হিকি এই উত্তরের মূল বক্তব্যটি হ'ল সংঘাতের ক্ষেত্রে যেমন স্ট্যাশ থাকে তেমন থাকে, যে git stash popকোনও দ্বন্দ্ব ছাড়াই শেষ না হওয়া পর্যন্ত আপনি যতবার প্রয়োজন কল করতে পারেন । সুতরাং আপনার দ্বন্দ্বের পরে, হ্যাঁ, কার্যকরী ডিরেক্টরি মেসে আছে তবে, আপনি এটিকে পরিষ্কার করে git stash popআবার কল করতে পারেন।
ফ্লোরি

5
থেকে পূর্বাবস্থা গত লুকোবার জায়গা আবেদন এই কমান্ড খুবই দরকারী: git checkout -f!
লেফি তারিক

16

নির্দেশাবলী এখানে কিছু জটিল তাই আমি আরও সোজা কিছু সরবরাহ করতে যাচ্ছি:

  1. git reset HEAD --hard বর্তমান শাখায় সমস্ত পরিবর্তন ত্যাগ করুন

  2. ... মধ্যস্থতাকারী কাজ প্রয়োজনীয় হিসাবে সম্পাদন করুন

  3. git stash pop আপনি প্রস্তুত হওয়ার পরে কোনও তারিখে আবার স্ট্যাশ পুনরায় পপ করুন



8
git checkout -f

আপনার পূর্ববর্তী রাষ্ট্রটি পরিষ্কার থাকলে অবশ্যই কাজ করা উচিত।

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