কেবল একটি একক ফাইল স্ট্যাশ করুন


175

আমি একটি একক ফাইল থেকে কেবলমাত্র পরিবর্তনগুলি স্থির রাখতে সক্ষম হতে চাই:

git stash save -- just_my_file.txt

উপরোক্ত যদিও কাজ করে না। কোন বিকল্প?



জন্য একক ফাইল, পরিবর্তে আকাশ গান লুকোবার জায়গা আদেশ, অনেক সহজ পদ্ধতির কপি হয় একক ফাইল এবং আপনি তা ফিরিয়ে আনতে চান কেবল মূল ওভার কপি করুন। যেমন। cp just_my_file.txt just_my_file.txt.manualstash এখন আপনি সমস্ত চেকআউট এবং স্টাফ করতে পারেন এবং অনুলিপিটি "অচিহ্নযুক্ত ফাইল" হওয়ায় আপনি শাখা ছাড়িয়ে যেতে এবং কোনও সমস্যা ছাড়াই কমিট করতে পারেন। আপনি যখন ডান শাখায় রয়েছেন / প্রতিশ্রুতিবদ্ধ হন যেখানে আপনি " একক ফাইলকে একীভূত করতে চান" mv just_my_file.txt.manualstash just_my_file.txtএবং এখন আপনি পরিবর্তনগুলি পর্যালোচনা করতে এবং যেখানে প্রয়োজন সেখানে কমিট করতে পারেন
দিমিত্রি কে

উত্তর:


173

আমি মনে করি stash -pসম্ভবত আপনি চান পছন্দ, তবে ভবিষ্যতে আপনি যদি আরও জটিল বিষয়গুলিতে প্রবেশ করেন তবে মনে রাখবেন:

Stashকেবলমাত্র আরও জটিল জটিল branchসেটগুলির জন্য কেবলমাত্র একটি খুব সহজ বিকল্প । স্ট্যাশগুলি জিনিসগুলি প্রায় দ্রুত ঘুরিয়ে আনার জন্য খুব দরকারী, তবে আপনি শাখাগুলি দিয়ে আরও জটিল জিনিসগুলি এত বেশি মাথা ব্যথা এবং কাজ ছাড়াই সম্পাদন করতে পারেন।

# git checkout -b tmpbranch
# git add the_file
# git commit -m "stashing the_file"
# git checkout master

আপনি যা যা চান তা করুন এবং তারপরে পরে কেবল rebaseএবং / অথবা mergeটিম্পব্র্যাঞ্চ। এটা সত্যিই নয় যে অনেক অতিরিক্ত কাজ যখন আপনি আরো সতর্ক ট্র্যাকিং চেয়ে লুকোবার জায়গা অনুমতি দেবে করতে হবে।


2
উল্টো দিকে, আপনি স্ট্যাশগুলি বিশাল ব্যথা ছাড়াই আসল শাখায় পরিণত করতে পারেন।
ওয়েজ হার্ডকার

88

আপনি যদি আপনার স্ট্যাশেড পরিবর্তনগুলি সহ কোনও বার্তা নির্দিষ্ট করতে না চান তবে ফাইলের নামটি একটি ডাবল ড্যাশ পরে পাস করুন।

$ git stash -- filename.ext

যদি এটি একটি অপ্রকাশিত / নতুন ফাইল হয় তবে আপনাকে প্রথমে এটি স্টেজ করতে হবে।

তবে আপনি যদি কোনও বার্তা নির্দিষ্ট করতে চান তবে ব্যবহার করুন push

git stash push -m "describe changes to filename.ext" filename.ext

উভয় পদ্ধতি গিট সংস্করণ 2.13+ এ কাজ করে


1
যখন তৈরীর পরিবর্তন সংশোধন এই উত্তরটি আমার কাছে সবচেয়ে সোজা এগিয়ে বলে মনে হয়: git stash -- filename.ext, git commit --amend, git stash pop
: Brandon ডিউই

1
আমি মনে করি এটি অবশ্যই কিছু নতুন কার্যকারিতার উপর নির্ভর করবে। এটি গিট 2.1.4 এ কাজ করে না।
রিচার্ড স্মিথ

এটি স্ট্যাশ সংরক্ষণের সাথে আমার জন্য কিছু অদ্ভুত আচরণের ফলস্বরূপ, তবে একই ফাইলগুলি একই সময়ে মঞ্চে যুক্ত হয়েছিল (গিট ভি 2.20.1),
প্যারাড্রয়েড

58

আপনি ইন্টারঅ্যাকটিভভাবে একক লাইনগুলি git stash -p(সমতুল্য git add -p) দিয়ে স্ট্যাশ করতে পারেন ।

এটি কোনও ফাইলের নাম নেয় না, তবে আপনি dযে ফাইলটি স্ট্যাশড চান সেটিতে পৌঁছে যাওয়া এবং সেখানে থাকা সমস্ত পরিবর্তনকে স্ট্যাশ না করা পর্যন্ত আপনি কেবল অন্য ফাইলগুলি এড়িয়ে যেতে পারেন a


3
আপনি স্ট্যাশ করতে চান না এমন প্রচুর ফাইল থাকলে এটি দীর্ঘ সময় নেয়।
jjj

23
কখন পরিবর্তন হয়েছে তা আমি জানি না তবে আপনার হিসাবে git 2.14.1ফাইলের নামটি নির্দিষ্ট করতে পারবেনgit stash -p <filename>
Muon

21

সর্বোত্তম বিকল্পটি হ'ল এই ফাইলটি ব্যতীত অন্য কিছুর git stash save --keep-indexমঞ্চায়ন করা এবং স্ট্যাশকে সূচকটি রাখতে বলুন , যাতে আপনার স্টেস্ট না করা ফাইলটি স্ট্যাশ করে :

$ git add .
$ git reset thefiletostash
$ git stash save --keep-index

ড্যান যেমন উল্লেখ করেছেন, thefiletostashকেবলমাত্র স্ট্যাশ দ্বারা পুনরায় সেট করা যায় তবে এটি অন্যান্য ফাইলগুলিকেও স্ট্যাশ করে, তাই আপনি যা চান তা ঠিক তা নয়।


2
যদিও এটি সূচকে একই অবস্থায় রাখে, এটি সূচীতে থাকা ফাইলগুলিও স্ট্যাশ করে না? অন্য কথায়, যদি এটি করার পরে আপনি বর্তমান শাখায় সূচকটি প্রতিশ্রুতিবদ্ধ করেন, তবে অন্য একটি শাখায় স্যুইচ করুন এবং করুন git stash pop, এটি কেবল একটি ফাইল যা আমরা স্ট্যাশ করতে চেয়েছিলাম, তা নয়, সমস্ত ফাইল প্রয়োগ করে চলেছে?
ড্যান মোল্ডিং

@ ড্যানমোল্ডিং: আপনি একদম ঠিক বলেছেন, আমি এ নিয়ে ভাবিনি।
চার্লসবি

16

আপনি যখন 'গিট স্ট্যাশ' ব্যবহার করেন তখনই আপনার প্রকৃত অর্থ 'পরিবর্তনগুলি বাতিল করুন' (এবং সাময়িকভাবে স্টিট স্ট্যাশ করতে গিট স্ট্যাশ ব্যবহার করবেন না) সেক্ষেত্রে আপনি ব্যবহার করতে পারেন

git checkout -- <file>

নোট করুন যে গিট স্ট্যাশগুলি ব্রাঞ্চিং এবং স্টাফ করার জন্য কেবলমাত্র একটি দ্রুত এবং সহজ বিকল্প।


আমি মনে করি আপনি যদি কোনও একক ফাইলে আপনার সমস্ত পরিবর্তিত পরিবর্তনগুলি সরাতে চান তবে এটি সেরা উত্তর।
মোহাম্মদ হাসিল

এবং আমি এই বিশেষ কাজের জন্য সেরা উত্তর
হব

6
প্রশ্নটি যথেষ্ট পরিষ্কার ছিল এবং কীভাবে একটি ফাইলে পরিবর্তন ফিরিয়ে আনতে হবে তা জিজ্ঞাসা করেনি। Downvoted।
রিচার্ড স্মিথ

বিকল্প হিসাবে স্পষ্টভাবে প্রদর্শন সহ এটি একটি ভাল উত্তর। তবে কিছু লোক ডাউনটোটকে আপত্তিজনক বৈশিষ্ট্য হিসাবে ব্যবহার করার পক্ষে যথেষ্ট জেদী হবে: +1
মুকুল জৈন

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