উত্তর:
উপর Git লুকোবার জায়গা র manpage আপনি (, "আলোচনা" বিভাগে পরেই "বিকল্প" বিবরণ) পড়তে পারেন যে:
স্ট্যাশকে একটি প্রতিশ্রুতিবদ্ধ হিসাবে উপস্থাপন করা হয় যার গাছটি কার্যক্ষম ডিরেক্টরিটির স্থিতি রেকর্ড করে এবং স্ট্যাশ তৈরি হওয়ার সময় এর প্রথম পিতা-মাতা হেড-এ প্রতিশ্রুতিবদ্ধ।
সুতরাং আপনি স্ট্যাশকে (যেমন stash@{0}প্রথম / শীর্ষস্থানীয় স্ট্যাশ) মার্জ কমিট হিসাবে বিবেচনা করতে পারেন এবং ব্যবহার করুন:
$ git diff stash@{0}^1 stash@{0} -- <filename>
ব্যাখ্যা: stash@{0}^1প্রদত্ত স্তরের প্রথম পিতা-মাতার অর্থ, যা উপরের ব্যাখ্যায় বর্ণিত প্রতিশ্রুতি যা পরিবর্তনগুলি বন্ধ করে দেওয়া হয়েছিল। আমরা "গিট ডিফ" এর এই ফর্মটি (দুটি কমিটের সাথে) ব্যবহার করি কারণ stash@{0}/ refs/stashএকটি মার্জ কমিট, এবং আমাদের কোন পিতামাতার সাথে আমরা আলাদা করতে চাই তা গিটকে আমাদের বলতে হবে। আরও ক্রিপ্টিক:
$ git diff stash@{0}^! -- <filename>
এছাড়াও কাজ করা উচিত ( "রেঞ্জ নির্দিষ্টকরণ" বিভাগে সিনট্যাক্সের ব্যাখ্যার জন্য গিট রেভ পার্স ম্যানপেজ দেখুন rev^!)
তেমনি, আপনি স্ট্যাটাসের বাইরে কোনও একক ফাইল চেক করতে গিট চেকআউট ব্যবহার করতে পারেন :
$ git checkout stash@{0} -- <filename>
বা অন্য ফাইলের নামে এটি সংরক্ষণ করতে:
$ git show stash@{0}:<full filename> > <newfile>
অথবা
$ git show stash@{0}:./<relative filename> > <newfile>
( মনে রাখবেন যে এখানে <সম্পূর্ণ ফাইলের নাম> কোনও প্রকল্পের শীর্ষ ডিরেক্টরি সম্পর্কিত (ফাইলটি সম্পর্কিত: মনে করুন stash@{0})) সম্পর্কিত একটি ফাইলের পুরো পথের নাম ।
stash@{0}শেল সম্প্রসারণ থেকে আপনার রক্ষা করার প্রয়োজন হতে পারে , যেমন ব্যবহার "stash@{0}"বা 'stash@{0}'।
git checkoutপদ্ধতিটি স্ট্যাশ থেকে সঠিক ফাইলটি অনুলিপি করে - এটি আপনার ওয়ার্কিং ডিরেক্টরিতে যা git stash applyচায় তার সাথে এটি মার্জ করে না । (সুতরাং স্ট্যাশ তৈরি হওয়ার ভিত্তি থেকে যদি আপনার কোনও পরিবর্তন হয় তবে সেগুলি নষ্ট হয়ে যাবে)।
git stash applyফাইলটি স্ট্যাশ করার পরে কার্যকারী বৃক্ষে পরিবর্তিত একটি ফাইলের পরিবর্তনের জন্য, কার্য গাছের সেই ফাইলটি অবশ্যই মঞ্চস্থ করতে হবে। কাজ করার জন্য স্বতঃ-মার্জ করার জন্য, একই ফাইলগুলিকে কার্যকরী অনুলিপি এবং স্ট্যাশড কপি-টু-ইন-মার্জ করতে উভয়ই সংশোধন করা যায় না। অবশেষে, স্ট্যাশ প্রয়োগ আইটেমটিকে স্ট্যাশ থেকে পছন্দ করে না সরিয়ে দেয় git stash pop।
আপনি যদি এর git stash applyপরিবর্তে ব্যবহার করেন তবে git stash popএটি আপনার কার্যকারী গাছের সাথে স্ট্যাশ প্রয়োগ করবে তবে তবুও স্ট্যাশ রাখবে।
এটি হয়ে গেলে আপনি add/ আপনি commitযে ফাইলটি চান তা করতে পারেন এবং তারপরে বাকী পরিবর্তনগুলি পুনরায় সেট করতে পারেন।
git stash pop stash@{0}( git stash list
স্ট্যাশ সহ যেকোনো শাখা থেকে পরিবর্তন আনার একটি সহজ উপায় রয়েছে:
$ git checkout --patch stash@{0} path/to/file
আপনি অনেকগুলি অংশে প্যাচ করতে চান তবে আপনি ফাইলটি বাদ দিতে পারেন। অথবা একক ফাইলে সমস্ত পরিবর্তন আনতে প্যাচ বাদ দিন (তবে পথটি নয়)। আপনার একাধিক 0নম্বর থাকলে স্ট্যাশ নম্বরটি দিয়ে প্রতিস্থাপন করুন git stash list। মনে রাখবেন এটি এর মতো diffএবং শাখাগুলির মধ্যে সমস্ত পার্থক্য প্রয়োগ করার প্রস্তাব দেয় । শুধুমাত্র একটি একক প্রতিশ্রুতি / স্ট্যাশ থেকে পরিবর্তন পেতে, একবার দেখুন git cherry-pick --no-commit।
git help checkout। --patchইন্টারেক্টিভ মার্জ করে, শেলটিতে আপনি অনুমোদনের (গুলি) যা যা প্রয়োগ করে (অথবা আপনি eপ্যাচটি ছিদ্র করতে পছন্দ করেন তবে যা কিছু সংরক্ষণ করুন) এটি প্রয়োগ করে । পাথ একাই ফাইলটি ওভাররাইট করবে, যেমন আমি লিখেছিলাম, "সমস্ত পরিবর্তন"।
git config --global alias.applydiffat '!git checkout --patch "$1" -- $(git diff --name-only "$1"^ "$1")' - এরপরে git applydiffat stash@{4}কেবল স্ট্যাশ এবং এর পিতামাতার মধ্যে পরিবর্তিত ফাইলগুলি ব্যবহার করা হয়।
পুরো ফাইলটি দেখতে: git show stash@{0}:<filename>
পার্থক্যটি দেখতে: git diff stash@{0}^1 stash@{0} -- <filename>
diffসঙ্গে difftoolআপনার প্রিয় বহিরাগত পরিবর্তন ব্যবহার করতে।
$ git checkout stash@{0} -- <filename>
মন্তব্য:
আপনি "-" এবং ফাইলের নাম প্যারামিটারের পরে স্থান রেখেছেন তা নিশ্চিত করুন
আপনার নির্দিষ্ট স্ট্যাশ নম্বর দিয়ে শূন্য (0) প্রতিস্থাপন করুন। স্ট্যাশ তালিকা পেতে, ব্যবহার করুন:
git stash list
ভিত্তিক জাকুব নারাবস্কির উত্তরের - সংক্ষিপ্ত সংস্করণ
আপনি " git show stash@{0}" (বা স্ট্যাশের সংখ্যা যাই হোক না কেন; "গিট স্ট্যাশ তালিকা" দেখুন) দিয়ে স্ট্যাশের জন্য পৃথকীকরণ পেতে পারেন। একটি একক ফাইলের জন্য পার্থক্যের অংশটি বের করা সহজ।
git show stashশীর্ষস্থানীয় স্ট্যাশ দেখানোর জন্য ব্যবহার করুন (সাধারণত কেবলমাত্র আপনার একমাত্র)। একইভাবে আপনি আপনার বর্তমান শাখা এবং এর সাথে স্ট্যাশগুলির মধ্যে পার্থক্য দেখাতে পারেন git diff head stash।
সবচেয়ে সহজ ধারণাটি, যদিও এটি সর্বোত্তম নয়, আপনার কাছে কি তিনটি ফাইল পরিবর্তিত হয়েছে এবং আপনি একটি ফাইলকে স্ট্যাশ করতে চান।
আপনি যদি git stashতাদের সকলকে স্ট্যাশ করে, git stash applyআবার এবং আবার ফিরিয়ে আনতে করেনgit checkout f.c কার্যকরভাবে পুনরায় সেট করার জন্য প্রশ্নে থাকা ফাইলটিতে।
আপনি যখন ফাইলটি আনস্টাশ করতে চান git reset --hardতখন রান করুন এবং আবার চালনা করুন git stash apply, git stash applyস্ট্যাশ স্ট্যাকের থেকে পৃথকটি সাফ করে না এমন সত্যতার সুযোগ নিয়ে ।
যদি স্ট্যাশ করা ফাইলগুলিকে বর্তমান সংস্করণের সাথে একত্রীকরণের প্রয়োজন হয় তবে ডিফ ব্যবহার করে পূর্ববর্তী উপায়গুলি ব্যবহার করুন। অন্যথায় আপনি git popএগুলি স্টেস্ট করার git add fileWantToKeepজন্য , আপনার ফাইল git stash save --keep-indexমঞ্চ করার জন্য এবং মঞ্চে যা আছে তা বাদ দিয়ে সবকিছু করার জন্য ব্যবহার করতে পারেন । মনে রাখবেন যে পূর্ববর্তীগুলির সাথে এই ধরণের পার্থক্য হ'ল এটি স্ট্যাশ থেকে ফাইলটিকে "পপ" করে। পূর্ববর্তী উত্তরগুলি এটি রাখে git checkout stash@{0} -- <filename>তাই এটি আপনার প্রয়োজন অনুসারে চলে।
আপনার কার্যনির্বাহী গাছের কাছে স্ট্যাশ-এ থাকা কোনও ফাইলের পরিবর্তনগুলি প্রয়োগ করতে নিম্নলিখিতটি ব্যবহার করুন।
git diff stash^! -- <filename> | git apply
এটি সাধারণত ব্যবহারের চেয়ে ভাল git checkoutকারণ আপনি স্ট্যাশ তৈরি করার পরে আপনি ফাইলটিতে যে কোনও পরিবর্তন হারাবেন না।
ভিজ্যুয়াল স্টুডিও কোডে গিট স্ট্যাশ এক্সটেনশন ব্যবহার করুন