আমি কীভাবে কোনও নির্দিষ্ট ফাইলকে স্তব্ধ করতে পারি?


1620

আমি সংরক্ষণ করতে চলেছি এমন স্ট্যাশটির বাইরে থাকা অন্যদের পরিবর্তিত রেখে আমি একটি নির্দিষ্ট ফাইলকে কীভাবে স্ট্যাশ করতে পারি?

উদাহরণস্বরূপ, যদি গিট স্ট্যাটাসটি আমাকে দেয়:

younker % gst      
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   app/controllers/cart_controller.php
#   modified:   app/views/cart/welcome.thtml
#
no changes added to commit (use "git add" and/or "git commit -a")

এবং আমি কেবল অ্যাপ / ভিউ / কার্ট / স্বাগতম.thtml স্ট্যাশ করতে চাই, আমি কীভাবে এটি করব? এর মতো কিছু (তবে অবশ্যই এটি কার্যকর হয় না):

git stash save welcome_cart app/views/cart/welcome.thtml

55
"সম্ভাব্য সদৃশ" প্রশ্নের বর্তমানে গৃহীত হিসাবে চিহ্নিত একটি ভুল উত্তর রয়েছে।
পেঙ্গুইন ব্রায়ান

6
আপনি এটি ব্যবহার git checkout -- filenameকরে मूळ অবস্থায় ফিরে যেতে পারেন ।
ভিজুএলেক্স

7
@ ভিসুয়ালেক্স এটি সত্যই এটি ফিরিয়ে দেবে, তবে তা লুকিয়ে রাখবে না
জেস্পার

4
রে পেঙ্গুইন ব্রায়ানের মন্তব্য: হ্যাঁ, সাম্প্রতিক সংস্করণের গিটের জন্য এই প্রশ্নের "সম্ভাব্য সদৃশ" প্রশ্নের লিঙ্কের স্বীকৃত উত্তর।
মঙ্গলবার

4
it

উত্তর:


2464

সম্পাদনা করুন: Git 2.13 সাল থেকে, সেখানে লুকিয়ে রাখার জন্য একটি নির্দিষ্ট পথ সংরক্ষণ করার জন্য একটি কমান্ড: git stash push <path>। উদাহরণ স্বরূপ:

git stash push -m welcome_cart app/views/cart/welcome.thtml

পুরানো উত্তর:

আপনি git stash --patch(বা git stash -p) ব্যবহার করে এটি করতে পারেন - আপনি ইন্টারেক্টিভ মোডে প্রবেশ করবেন যেখানে আপনাকে পরিবর্তিত প্রতিটি কুকুরের সাথে উপস্থাপিত হবে। ব্যবহারের nফাইল এড়িয়ে যেতে আপনি লুকিয়ে রাখার জন্য, চাই না yযখন আপনি এক যে আপনি লুকোবার জায়গা করতে চান সম্মুখীন, এবং qপ্রস্থান এবং অবশিষ্ট কৃপণ ব্যক্তি unstashed ত্যাগ করার। aসেই ফাইলটিতে দেখানো কূট এবং বাকী কুকুরগুলি লুকিয়ে রাখবে।

সর্বাধিক ব্যবহারকারীর বান্ধব পদ্ধতি নয়, তবে আপনার যদি সত্যই প্রয়োজন হয় তবে এটি কাজটি করে।


32
কষ্টকর, কিন্তু কাজ করে। আমি চাই যে কেবল পর্যায়ক্রমে পরিবর্তনগুলি আটকানোর দ্রুত উপায় ছিল এবং পরে যখন পপ করা হয়েছে তখন সেই পরিবর্তনগুলি অচিহ্নবদ্ধ কর্মক্ষম গাছের মধ্যে চলে যেতে হবে।
জেমস জনস্টন

54
@ জেমস জোনস্টন git stash --keep-indexআপনাকে সমস্ত অনাস্থাবিহীন পরিবর্তনগুলি (আপনি যা খুঁজছেন তার বিপরীতে) জমা দেওয়ার অনুমতি দেবে। stackoverflow.com/a/8333163/378253
নিকোলাস ওয়ার্মসার

121
আপনি যদি এটির aপরিবর্তে বলেন yতবে এই হুঁশ + ফাইলের বাকী অংশটি লুকিয়ে রাখা হবে, যা অনেক দ্রুত।
i_am_jorf

53
@ জেফামফোন দুর্দান্ত! এছাড়াও dবিপরীত কি করতে হবে, অর্থাত্ বর্তমান ফাইলে কোনও কৃপণ ব্যক্তি লুকিয়ে নয়। এবং প্রকৃতপক্ষে ?সমস্ত সম্ভাব্য বিকল্প প্রদর্শন করবে।
omnikron

8
@ ভেনকভস্কি এটি "বার্তা" এর জন্য দাঁড়িয়েছে এবং এটি স্ট্যাশের alচ্ছিক বিবরণ নির্দিষ্ট করতে ব্যবহৃত হয়। আপনার যদি এটির প্রয়োজন না হয় তবে আপনি -m welcome_cartঅংশটি ছেড়ে দিতে পারেন ।
সুইভ

333

আমি সাধারণত সূচি পরিবর্তনগুলিতে যুক্ত করি আমি স্ট্যাশ করতে চাই না এবং তারপরে --keep-indexবিকল্প দিয়ে স্ট্যাশ করি ।

git add app/controllers/cart_controller.php
git stash --keep-index
git reset

শেষ পদক্ষেপটি alচ্ছিক, তবে সাধারণত আপনি এটি চান। এটি সূচী থেকে পরিবর্তনগুলি সরিয়ে দেয়।


সতর্কতা মন্তব্যগুলিতে উল্লিখিত হিসাবে, এটি স্ট্যাশড এবং অস্থির উভয়ই স্ট্যাশগুলিতে রাখে। --keep-indexশুধু একা পরে লুকোবার জায়গা সম্পন্ন করা হয় সূচক ছেড়ে। আপনি পরে স্ট্যাশ পপ করলে এটি মার্জ সংঘাত সৃষ্টি করতে পারে।


4
আপনি যদি প্যাচ বিকল্পটি দিয়ে চলতে চান না তবে যদি আপনার অনেক পরিবর্তন হয় তবে এটি গ্রহণযোগ্য উত্তরের চেয়ে অনেক ভাল।
quux00

181
না, এটি স্ট্যাশড এবং স্টেস্টেড উভয়ই স্ট্যাশগুলিতে রাখে। --keep-indexশুধু একা পরে লুকোবার জায়গা সম্পন্ন করা হয় সূচক ছেড়ে। সুতরাং এটি এএফএআইসিটি-র প্রশ্নের বৈধ উত্তর নয়।
রমন

4
এর বিপরীতটি করার জন্য সমাধানের জন্য @ রাচেলের প্রশ্নের আমার উত্তরটি দেখুন (স্টেস্টওড পরিবর্তনগুলি পরিবর্তিত করুন, অযাচিত পরিবর্তনগুলির পরিবর্তে) - stackoverflow.com/questions/3040833/…
যিশুফ্রেইক

4
এর পরে, আপনি যদি যুক্ত করা ফাইলগুলি প্রতিশ্রুতি না দিয়ে স্ট্যাশ করা ফাইলগুলি ফিরে পেতে চান তবে আপনি চালাতে পারেন git stash; git stash pop stash@{1}
yndolok

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

14

এসভিকের উত্তরে যুক্ত করতে, বিকল্পটি আপনার স্ট্যাশে -mকোনও বার্তা যুক্ত করে এবং এটি পুরোপুরি alচ্ছিক । সুতরাং, আদেশ

git stash push [paths you wish to stash]

পুরোপুরি বৈধ। উদাহরণস্বরূপ, আমি যদি কেবল src/ডিরেক্টরিতে পরিবর্তনগুলি স্ট্যাশ করতে চাই তবে আমি কেবল চালাতে পারি

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