গিট স্ট্যাশ তৈরির মাধ্যমে তৈরি করা কোনও স্ট্যাশ কীভাবে মুছবেন?


548

গিট স্ট্যাশটি আমি যা চাইছি তা অনেক কিছু করে মনে হচ্ছে, স্ক্রিপ্ট করা কিছুটা কঠিন ছাড়া যদি আপনার কোনও পরিবর্তন git stash; git stash popনা হয় তবে আপনার সংগ্রহস্থলটিতে পরিবর্তন আছে কিনা তার চেয়ে আলাদা কিছু করবে।

এটি উপস্থিত git stash createহয় এটি সেই সমস্যার উত্তর এবং এক জিনিস ব্যতীত সমস্ত কিছুই কাজ করে ... আমি তৈরি হওয়া স্ট্যাশ থেকে মুক্তি পেতে পারি না। স্ট্যাশ থেকে মুক্তি পাওয়ার কোনও উপায় আছে কি?

আমি কী করছি তা এটিকে 100% পরিষ্কার করার জন্য:

স্ট্যাশ তৈরি করুন:

~/tmp/a(master) $ git stash create 
60629375d0eb12348f9d31933dd348ad0f038435
~/tmp/a(master) $ git st
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   new file:   b
#
~/tmp/a(master) $ git reset --hard
HEAD is now at 555d572 log message

স্ট্যাশ ব্যবহার করুন:

~/tmp/a(master) $ git apply 60629375d0eb12348f9d31933dd348ad0f038435
fatal: can't open patch '60629375d0eb12348f9d31933dd348ad0f038435': No such file or directory
~/tmp/a(master) $ git stash apply 60629375d0eb12348f9d31933dd348ad0f038435
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   new file:   b
#

স্ট্যাশ মুছুন: (এই শেষ বিটটি কাজ করে না)

~/tmp/a(master) $ git stash drop !$
git stash drop 60629375d0eb12348f9d31933dd348ad0f038435
'60629375d0eb12348f9d31933dd348ad0f038435' is not a stash reference

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

1
@ প্রফেসরটোমে স্ট্যাশ তৈরি করা হয়েছিল, এ কারণেই এটি একটি হ্যাশ কোড ফিরিয়ে দিয়েছে এবং কেন git stash applyকাজ করেছে। git applyপ্রচেষ্টা একটি স্থানীয় প্যাচ ফাইল যা অস্তিত্ব নেই পড়তে। সত্যি বলতে কী, এটি সম্ভবত সেখানেই ছিল না এবং এটি কখনও কাজ করতে পারে না। আমি এটিকে প্রশ্ন থেকে মুছে ফেলার জন্য অস্পষ্টভাবে প্রলুব্ধ হয়েছি, তবে এটি বর্তমান আকারে এতগুলি সাহায্য করেছে বলে আমি এটিকে যেমন রেখে দেব।
পল ওয়াগল্যান্ড

উত্তর:


367

এর সাথে তৈরি একটি সাধারণ স্ট্যাশ মুছতে git stashআপনি চান git stash dropবা চান git stash drop stash@{n}। আরো বিস্তারিত জানার জন্য নিচে দেখুন।


আপনার দিয়ে তৈরি স্ট্যাশ মুছতে হবে না git stash create। ডক্স থেকে:

স্ট্যাশ এন্ট্রি তৈরি করুন (যা একটি নিয়মিত কমিট অবজেক্ট) এবং রেফ নেম স্পেসে কোথাও না সঞ্চয় করে এর অবজেক্টের নাম ফিরিয়ে দিন। এটি স্ক্রিপ্টগুলির জন্য কার্যকর হতে পারে। এটি সম্ভবত আপনি যে আদেশ ব্যবহার করতে চান তা নয়; উপরে "সংরক্ষণ করুন" দেখুন।

যেহেতু কোনও কিছুই স্ট্যাশ প্রতিশ্রুতির উল্লেখ নেই, এটি শেষ পর্যন্ত আবর্জনা সংগ্রহ করবে।


এর সাথে তৈরি git stashবা git stash saveসংরক্ষণ করা হয় এমন স্ট্যাশ refs/stash, এবং এটি দিয়ে মুছতে পারে git stash drop। সমস্ত গিট অবজেক্টের মতো, প্রকৃত স্ট্যাশ বিষয়বস্তুগুলি gcমেয়াদ শেষ হওয়ার পরে কোনও জিনিস ছাঁটাই করা না হওয়া অবধি আপনার কম্পিউটার থেকে মুছে ফেলা হয় না (ডিফল্ট ২ সপ্তাহ পরে হয়)।

পুরানো refs/stash স্ট্যাশগুলি রিফ্লোগে সংরক্ষণ করা হয় (চেষ্টা করুন cat .git/logs/refs/stash), এবং এটির মাধ্যমে মুছে ফেলা যায় git stash drop stash@{n}, কোথায় nদেখানো সংখ্যা git stash list


20
এটি শিরোনাম প্রশ্নের উত্তর দেয় না। ফলস্বরূপ, আমার মতো লোকেরা, যারা গুগলের মাধ্যমে শিরোনামের প্রশ্নের উত্তর অনুসন্ধান করে প্রশ্নে পৌঁছায় এবং প্রকৃত বিবরণটির জন্য বিশেষভাবে যত্ন নেন না, যিনি আসলে এর উত্তর দিয়েছেন তাকে ভোট দিন। কিছু লোক স্বতঃস্ফূর্তভাবে গ্রহণযোগ্য উত্তরকে ভোট দেয় কারণ এটি তাদের সহায়তা করে না। আমি ব্যক্তিগতভাবে সবেমাত্র আমাকে উত্তরটি উত্তোলন করেছিলাম যা আমাকে সাহায্য করেছিল।
আর্টঅফ ওয়ারফেয়ার

15
সুতরাং: 1) গুগল "গিট মুছে ফেলুন স্ট্যাশ" 2) প্রশ্নের শিরোনামের প্রথমার্ধের উপর ভিত্তি করে এসও লিঙ্কে ক্লিক করুন 3) শিরোনামের দ্বিতীয়ার্ধের সাথে নির্দিষ্ট সঠিক উত্তরটি ডাউনভোট করুন। এটি একটি নতুন।
dahlbyk

10
@ আর্টঅফওয়ারফেয়ারটি তখন পড়ার বোধগম্যতার অভাব হবে কারণ এটি "শিরোনাম প্রশ্ন" এর খুব স্পষ্ট প্রতিক্রিয়া।
ক্রিস হেইস

1
যথেষ্ট ফর্সা। আমি কেবলমাত্র আমার স্ট্যাশগুলি তৈরি করে তৈরি করি git stash- জানি না এটি আসলে মানচিত্রের git stash createবা অন্য কোনও কিছুর মানচিত্র কিনা । গিট অবশ্যই এমন কিছু যা আমি এখনও শিখছি (যদি তা না হয় তবে আমি এসও কিউ এবং এর মতো
পড়তাম না

1
@ অ্যাড্রিয়ানপ্রঙ্ক এটি ঠিক সেই ধরণের জিনিস যা আমি আসলে ব্যবহারের git stash createজন্য সুপারিশ করব । একটি টাইমস্ট্যাম্পড প্যাচ ফাইলটি সংরক্ষণ করার পরিবর্তে, আপনি সম্ভবত গিট রিফ্লোগটিকে এটি আপনার জন্য একটি কাস্টম রেফ (উদাঃ refs/backup) এ সংরক্ষণ করতে দিতে পারেন। আমি 1) git stash create, 2) নতুন স্ট্যাশ গাছের সাথে তুলনা করব refs/backup^{tree}, 3) গাছটি আলাদা হলে git update-ref --create-reflog refs/backup <stash-sha>,। শেষ পর্যন্ত পুরানো ব্যাকআপ স্ট্যাশগুলি স্বয়ংক্রিয়ভাবে ছাঁটাই করা হবে।
dahlbyk

837

git stash dropযা শীর্ষ লুকোবার জায়গা ড্রপ - - কোন প্যারামিটার নেয় বা লুকোবার জায়গা রেফারেন্স যা দেখে মনে হচ্ছে: stash@{n}যা nমনোনীত যা ড্রপ লুকিয়ে। আপনি কমিট আইডি পাস করতে পারবেন না git stash drop

git stash drop            # drop top hash, stash@{0}
git stash drop stash@{n}  # drop specific stash - see git stash list

একটি লুকোবার জায়গা ড্রপ হবে পরিবর্তনstash@{n} সব stashes এর প্রশিক্ষণে আরও নিচে স্ট্যাক।

আমি নিশ্চিত না কেন আপনি কেন স্ট্যাশ ফেলে দেওয়ার দরকার মনে করছেন কারণ আপনি যদি stash createস্ট্যাশ এন্ট্রি ব্যবহার করছেন তবে আপনার "স্ট্যাশ" এর জন্য তৈরি করা হয়নি, তাই ড্রপ করার মতো কিছু নেই।


ঠিক আছে, "স্ট্যাশ" ব্যবহার করে এন্ট্রিটি তৈরি করা হয়েছে ... কেউ যুক্তিযুক্তভাবে ভাববেন যে "স্ট্যাশ" ব্যবহার করে এটি সরানো হবে।
পল ওয়াগল্যান্ড 21'11

2
গিট স্ট্যাশ করার জন্য ম্যান পৃষ্ঠাটি দেখুন। স্ট্যাশ তৈরি কোনও এন্ট্রি তৈরি করে না, কেবল স্ট্যাশের জন্য প্রতিশ্রুতিবদ্ধ অবজেক্ট যাতে অপসারণের জন্য স্ট্যাশ লগটিতে কোনও প্রবেশ নেই।
সিবি বেইলি

3
মানুষ থেকে : একটি স্ট্যাশ তৈরি করুন (যা নিয়মিত কমিট অবজেক্ট) এবং রেফ নেম স্পেসে কোথাও না সঞ্চয় করে এর অবজেক্টের নাম ফিরিয়ে দিন।
রাফিন

40
সতর্কতা : আপনার সম্ভবত 1, 2, 3 এর মতো একাধিক ড্রপ করা উচিত নয়, কারণ আপনি আসলে 1, 3 এবং 5 নাম্বারটি বাদ দিবেন 1, 2, এবং 3 বাদ দেওয়ার সঠিক উপায়টি হ'ল 3, 2, 1, বা 1, 1, 1 ক্রমে এগুলি করুন Also এছাড়াও, 0 টি স্ট্যাকের শীর্ষে রয়েছে এবং এটি 0 সূচকযুক্ত।
আর্টঅফ ওয়ারফেয়ার

2
"স্ট্যাশ চেঞ্জস" বোতামটি চাপলে গিট এক্সটেনশানগুলি একটি অজানা আদেশ দেয় and জিইউআই ব্যবহার করে স্ট্যাশ থেকে মুক্তি পাওয়ার কোনও সুস্পষ্ট উপায় নেই তবে কমান্ড লাইন থেকে "গিট স্ট্যাশ তালিকা" ডাব্লুআইপি স্ট্যাশ দেখায় এবং "গিট স্ট্যাশ ক্লিয়ার" এ থেকে মুক্তি পেয়ে যায়।
ডেভ

215

আপনি যদি 100% নিশ্চিত হন যে আপনার কাছে কেবলমাত্র একটি স্ট্যাশ রয়েছে বা আপনি সমস্ত স্ট্যাশগুলি মুছতে চান ( git stash list107% নিশ্চিত হয়ে নিন) তবে আপনি এটি করতে পারেন:

git stash clear

.. এবং তাদের সম্পর্কে ভুলে যান (এটি সমস্ত স্ট্যাসকে মুছে ফেলে)।

দ্রষ্টব্য: যারা এখানে এসেছেন তাদের সবাইকে (আমার মত) সাফ করার উপায় খুঁজছেন তাদের জন্য এই উত্তর যুক্ত করা হয়েছে।


26
আপনার যদি কেবল একটি স্ট্যাশ থাকে তবে আমি এখনও ব্যবহারের পরামর্শ দেব git stash drop, কারণ এটি কেবলমাত্র একটি স্ট্যাশকে ফেলে দেয়, এবং আপনাকে প্রত্যাশার চেয়ে বেশি হারানোর বিষয়ে চিন্তা করতে হবে না।
পল ওয়াগল্যান্ড

এটি উত্সাহিত হিসাবে এটি আসলে প্রশ্নের উত্তর দেয়, এটি করা ভাল অনুশীলন কিনা। আমার আসলে এটি প্রয়োজন, আজ আমি যে স্ট্যাশগুলি তৈরি করেছি তা শেষ করা দরকার।
অ্যালেক্স ম্যাককেবে

2
আমি দীর্ঘকাল ধরে স্ট্যাশ ব্যবহার করছি। এবার অবশ্য আমি git stash dropযথারীতি কেবল ব্যবহার করে নিজের তৈরি শেষ স্ট্যাশ থেকে মুক্তি পেতে সক্ষম হইনি । আমি আলাদাভাবে কী করেছি সে সম্পর্কে আমি নিশ্চিত নই। যাইহোক, git stash clearআমার জন্য কাজ। জানত না এর অস্তিত্ব আছে। +1
কনস্টান্টিনোস গাইতানিস 23'15

3
+1 কারণ গিট স্ট্যাশ ফেলে দিতে অস্বীকার করছিল, কারণ স্ট্যাশ দ্বারা তৈরি করা একটি ফাইল ইতিমধ্যে বিদ্যমান ছিল ..
থিয়াগো বার্কালা

12
বিশেষত, 107% নিশ্চিত
লেভিনিনজা

84

গিট ডক থেকে: http://git-scm.com/docs/git-stash

ড্রপ [-Q | --quiet] []

স্ট্যাশ তালিকা থেকে একক স্ট্যাশড স্থিতি সরান। যখন কোনও দেওয়া হয় না, এটি সর্বশেষটি সরিয়ে দেয়। যেমন stash@{0}, অন্যথায় অবশ্যই ফর্মের স্ট্যাশ @ @} এর একটি বৈধ স্ট্যাশ লগ রেফারেন্স হতে হবে be

উদাহরণ:

git stash drop stash@{5}

এটি স্ট্যাশ এন্ট্রি 5 মুছে ফেলবে 5. স্ট্যাশগুলির সমস্ত তালিকা দেখতে:

git stash list

4
আমি ব্যতীত এই প্রশ্নের নীচে স্পষ্টভাবে বলতে পারি যে গিট স্ট্যাশ ড্রপ আমার যা চায় তা করে না।
পল ওয়াগল্যান্ড 18

1
git stash show stash@{REPLACE_IT_WITH_STASH_INDEX}মৃত্যুদন্ড কার্যকর করার আগে - আমি ব্যবহার করে কোনও স্ট্যাশের সামগ্রী চেক করার পরামর্শ দেব git stash drop। বিশ্বাস করুন, এটি অনেক ঝামেলা
বাঁচাবে

71

আপনি ব্যবহার করা উচিত

git stash save

এবং না

git stash create

কারণ এটি স্ট্যাশ তৈরি করে (যা একটি নিয়মিত কমিট অবজেক্ট) এবং রেফ নেম স্পেসে কোথাও না সঞ্চয় করে এর অবজেক্টের নাম ফিরিয়ে দেয় । সুতরাং স্ট্যাশ প্রয়োগের সাথে অ্যাক্সেসযোগ্য হবে না।

git stash save "some comment"আপনি যখন অনাস্থাবিহীন পরিবর্তনগুলি ব্যবহার করেছেন তখন আপনি অন্য শাখায় অনুলিপি করতে / সরাতে চান তখন ব্যবহার করা হয়

git stash apply stash@{0}যখন আপনি আপনার বর্তমান শাখায় প্রতিবিম্বিত করতে আপনার সংরক্ষিত (স্ট্যাশড) পরিবর্তনগুলি চান তখন ব্যবহার করুন (আপনার সংরক্ষিত স্ট্যাশ সূচকটি 0 হয় ধরে নেওয়া)

আপনি সর্বদা git stash listআপনার সমস্ত স্ট্যাশ সূচকগুলি পরীক্ষা করতে ব্যবহার করতে পারেন

এবং git stash drop stash@{0}নির্দিষ্ট স্ট্যাশ মুছতে মুছতে ব্যবহার করুন (আপনার সংরক্ষিত স্ট্যাশ সূচকটি 0 এবং আপনি এটি মুছতে চান))


3
কেবল তথ্যের জন্য - কেবল কমান্ডটি git stashডিফল্ট টাইপ করুনgit stash save
আরবিটি

1
git stash createস্ক্রিপ্ট দ্বারা ব্যবহার করার উদ্দেশ্যে। ওপির ব্যবহারের বিষয়টি। সুতরাং, প্রস্তাবনা git stash save"সাধারণ" ব্যবহারের জন্য কার্যকর হতে পারে তবে ওপির ব্যবহারের ক্ষেত্রে নয়। ওপি কটাক্ষপাত আছে করতে পারেন ডক্স আছে: উদাহরণস্বরূপ, স্ক্রিপ্টিং সম্পর্কিত আরও কমান্ড হয়git stash store
আদ্রিয়ান ডব্লিউ

1
git stash save "message"আজকাল পড়া উচিত git stash push -m "message"। তুলনা করুনgit commit -m "message"
টিনো


1

দস্তাবেজটি এখানে রয়েছে (চীনা ভাষায়) দয়া করে ক্লিক করুন।

তুমি ব্যবহার করতে পার

গিট স্ট্যাশ তালিকা

গিট স্ট্যাশ ড্রপ স্ট্যাশ @ {0}

এখানে চিত্র বর্ণনা লিখুন


git stash createথেকে ভিন্ন git stash saveবিশেষ করে, ফর্ম অত: পর প্রশ্ন সৃষ্টি তালিকায় প্রদর্শিত না, এবং বাদ যাবে না।
পল ওয়াগল্যান্ড 20'5

@ পোলওয়াগল্যান্ড আপনার উত্তরটি ধন্যবাদ এবং উত্তর সরবরাহ করুন। সত্য - আমি সরকারী দস্তাবেজটিতে "গিট স্ট্যাশ ক্রিয়েট" খুঁজে পাচ্ছি না। তবে এ সম্পর্কে, এটি আমার আগ্রহী if আপনি উপরে এটি করতে পারেন।
লঙ্গালাই

0
git stash           // create stash,
git stash push -m "message" // create stash with msg,
git stash apply         // to apply stash,
git stash apply indexno // to apply  specific stash, 
git stash list          //list stash,
git stash drop indexno      //to delete stash,
git stash pop indexno,
stash pop = stash drop + stash apply
git stash clear         //clear all your local stashed code
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.