গিট স্ট্যাশ পরিবর্তনগুলি নতুন শাখায় প্রযোজ্য?


349

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

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

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


3
আমি মনে করি আপনি এটি খুঁজছেন? stackoverflow.com/questions/556923/...
zx1986

উত্তর:


506

মানক পদ্ধতিটি কি কাজ করছে না?

  • পরিবর্তন করা
  • git stash save
  • git branch xxx HEAD
  • git checkout xxx
  • git stash pop

অপেক্ষাকৃত ছোট:

  • পরিবর্তন করা
  • git stash
  • git checkout -b xxx
  • git stash pop

8
@ এসফ্লেচে আপনি যদি নিজের স্ট্যাশের নাম রাখতে চান তবে আপনাকে গিট স্ট্যাশ সংরক্ষণ করতে হবে <নাম>, অন্যথায়, আপনি যেমন বলেন, এটি গিট স্ট্যাশের মতোই।
SgtPooki

5
এই পদ্ধতির ব্যবহারের পরে, মনে হচ্ছে আপনি যদি আগের শাখায় ফিরে আসেন তবে স্ট্যাশড পরিবর্তনগুলি ফিরে আসবে। নতুন শাখায় কেবল স্ট্যাশড পরিবর্তনগুলিই কি সম্ভব?
থমাস হিগগিনবোথাম

কেবলমাত্র নতুন শাখায় আপনার পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ।
ক্রিসআর

2
@ থমাস হিগগিনবোথাম কোনও শাখার মধ্যে ওয়ার্কিং ডিরেক্টরি সাধারণ নয় এবং যখন আপনি একটি শাখা থেকে অন্য শাখায় যান তখন এক থেকে অন্যটিতে অনুলিপি করা হয়। আপনি যা চান তা "অর্জন" করার জন্য আমি সাধারণত git stash save "description"পূর্বে উল্লিখিত কমান্ডের সাথে দরকারী বিবরণ যুক্ত করে বিভিন্ন স্ট্যাশ তৈরি করি ; এবং তারপরে আমি git clearশাখা (প্রকৃত ওয়ার্কিং ডিরেক্টরি ট্র্যাশ করার জন্য) এবং তারপরে git stash apply stash@{my_desired_stash}কাঙ্ক্ষিত শাখায় ( git checkout <branch>স্পষ্টভাবে এটিতে স্যুইচ করার পরে )। আমি জানি এটি একটি আসল সমাধান নয়, তবে আপনি গিটটি দিয়ে সবচেয়ে ভাল করতে পারেন ।
কামাফেদার

আমি git stash dropএকবার প্রতিশ্রুতিবদ্ধ দিয়ে
এটিকেও

221

যেহেতু আপনি ইতিমধ্যে আপনার পরিবর্তনগুলি স্থির করে রেখেছেন, আপনার কেবলমাত্র এই ওয়ান-লাইনারের প্রয়োজন:

  • git stash branch <branchname> [<stash>]

দস্তাবেজগুলি থেকে ( https://www.kernel.org/pub/software/scm/git/docs/git-stash.html ):

< স্ট্যাশ > মূলত তৈরি হওয়া কমিট থেকে শুরু করে < শখের নাম > নামে একটি নতুন শাখা তৈরি করে এবং পরীক্ষা করে , নতুন কার্যকারী বৃক্ষ এবং সূচীতে < স্ট্যাশ > রেকর্ডকৃত পরিবর্তনগুলি প্রয়োগ করে । যদি এটি সফল হয় এবং < স্ট্যাশ > স্ট্যাশ @ {< রিভিশন >} ফর্মের একটি রেফারেন্স হয় তবে এটি < স্ট্যাশ > ড্রপ করে । যখন কোনও < স্ট্যাশ > দেওয়া হয় না, সর্বশেষটি প্রয়োগ করে।

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


3
একক স্ট্যাশগুলির জন্য এটি যাওয়ার উপায়। গীত সর্বশেষ স্ট্যাশ প্রয়োগ করবে, নতুন শাখায় স্যুইচ করবে এবং 1 টি কমান্ডে স্ট্যাশ প্রয়োগ করবে বলে স্ট্যাশ নাম-রেফারেন্সের প্রয়োজন নেই।
sinisterOrange

@ রডনি গলপ এটি 'মাস্টার' এর সাথেও স্ট্যাশগুলি প্রয়োগ করে? আমি কী করতে চাই, 'মাস্টার' থেকে গিট স্ট্যাশ, তারপরে আমি 'গিট স্ট্যাশ শাখা [শাখা নাম] কোনও নতুন শাখায় স্ট্যাশ প্রয়োগ করতে এবং সম্পাদনা ছাড়াই মাস্টার রেখে আশা করব?
ডেভিড ডরিয়া

2
@ ডেভিডডোরিয়া আপনাকে মাস্টার ফিরে যাওয়ার আগে আপনার নতুন শাখায় পরিবর্তন আনতে হবে।
রডনি গোলপে

এখন এটি মাস্টারকেও পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ করেছিল ... আমি সত্যিই ক্ষতির মুখোমুখি ... অবশ্যই আমি এখনও সত্যই বুঝতে পারি না সফ্ট রিসেটিং মাস্টার পরে রিমোট রেপো থেকে টান এখন আমি যেখানে আমি থাকতে চাই am মাস্টার পরিবর্তন আগে রাজ্যে। নতুন শাখা পরিবর্তনগুলি ধরে রাখে।
একসটাইন

1

যদি আপনার কর্মক্ষেত্রের কিছু পরিবর্তন থাকে এবং আপনি তাদের একটি নতুন শাখায় স্থান দিতে চান তবে এই কমান্ডটি ব্যবহার করুন:

git stash branch branchName

এটি তৈরি করবে:

  1. একটি নতুন শাখা
  2. এই শাখায় পরিবর্তনগুলি সরান
  3. এবং সর্বশেষ স্ট্যাশ সরিয়ে ফেলুন (যেমন: গিট স্ট্যাশ পপ)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.