গিটের ওয়ার্কিং ডিরেক্টরিতে পরিবর্তনগুলি রেখে স্ট্যাশ পরিবর্তনগুলি


145

এমন কোনও git stashকমান্ড রয়েছে যা আপনার পরিবর্তনগুলিকে সংযুক্ত করে, তবে সেগুলিও কার্যক্ষম ডিরেক্টরিতে রাখে? সুতরাং মূলত একটি git stash; git stash applyপদক্ষেপে?


একই প্রশ্ন: stackoverflow.com/q/6315459/350384
Mariusz Pawelski


1
পছন্দ করেছেন প্রশ্নটি আমার চেয়ে বেশি নির্দিষ্ট। আমার প্রশ্নের উত্তর ছিল সহজভাবে "না"। যদিও লিঙ্কটির জন্য ধন্যবাদ, এটি কিছু লোকের জন্য বা এমনকি পরবর্তী সময়ে আমার পক্ষে সহায়ক হতে পারে।
মাইকেল ডার্স্ট

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

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

উত্তর:


156

এটির মূল্য কী তা করার জন্য এটি করার আরেকটি উপায় হ'ল আপনি রাখতে চান পরিবর্তনগুলি মঞ্চ করা এবং তারপরে সবকিছু ব্যবহার করে স্ট্যাশ করা --keep-index:

$ git add modified-file.txt
$ git stash push --keep-index

উপরের কমান্ডগুলি সমস্ত কিছু সংযুক্ত করবে, তবে এটি আপনার কার্যকরী ডিরেক্টরিতে থাকা ফাইলগুলি ছেড়ে দেবে।

থেকে অফিসিয়াল লিনাক্স কার্নেল গীত ডকুমেন্টেশনgit stash বা থেকে Git-এস সি এম :

যদি --keep-indexবিকল্পটি ব্যবহার করা হয় তবে ইতিমধ্যে সূচীতে যুক্ত সমস্ত পরিবর্তন অক্ষত থাকবে।


3
এটি আমি দেখেছি - রক্ষার-সূচকটির সবচেয়ে সহজ ব্যাখ্যা explanation দস্তাবেজে যেভাবে শব্দটি লেখা হয়েছিল আমি তার পুরো অর্থ পাইনি the
40 ডিটেকটিভ

52

git stashএবং তারপরে git stash apply( git stash && git stash apply) ফাইলগুলি স্ট্যাশ করবে এবং এর সাথে সাথেই স্ট্যাশ প্রয়োগ করবে। সুতরাং সর্বোপরি আপনার স্ট্যাশ এবং কার্যকারী ডিয়ারে আপনার পরিবর্তনগুলি আসবে।

আপনি যদি একটি টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরা তৈরি করতে চান কেবল এইটির মতো কিছু রাখুন ~/.gitconfig:

[alias]
    sta = "!git stash && git stash apply"

এই পদ্ধতির অপূর্ণতা হ'ল সমস্ত ফাইল স্ট্যাশ করে পুনরায় তৈরি করা হয়। এর অর্থ যে প্রশ্নযুক্ত ফাইলগুলিতে টাইমস্ট্যাম্পগুলি পরিবর্তন করা হবে। (আমি ফাইলটি ওপেন করার আগে যদি ফাইলটি সংরক্ষণ করার চেষ্টা করি তখন ইমাসকে অভিযোগ git staকরতে হয় এবং আপনি makeবা বন্ধুরা যদি ব্যবহার করেন তবে অপ্রয়োজনীয় পুনর্নির্মাণের কারণ হতে পারে ))


1
এছাড়াও, git stash; git stash applyএবং মধ্যে পার্থক্য কি git stash && git stash apply?
মাইকেল ডারস্ট


2
@ অ্যানথ্রোপমোরফিক git config --global alias.sta "!git stash && git stash apply"এটি করা উচিত।

git stash saveএকটি যুক্তি দিয়ে ব্যবহার করার জন্য আমি কীভাবে এই উপন্যাসটি সংশোধন করব এবং তারপরে করব git stash apply?
spinningarrow

1
@ জয়সিদ্রি, ব্যাং এর অর্থ এটি আসলে বাহ্যিক আদেশ, গিট আর্গুমেন্ট নয়। দস্তাবেজ অনুসারে : "আপনি যেমন বলতে পারেন, গিট নতুন কমান্ডের পরিবর্তে আপনি যা কিছু ব্যবহার করেছেন তার পরিবর্তে এটি ব্যবহার করতে পারেন। তবে, আপনি গিট সাবকম্যান্ডের পরিবর্তে একটি বাহ্যিক কমান্ড চালাতে চান that সেক্ষেত্রে আপনি কমান্ডটি একটি দিয়ে শুরু করবেন চরিত্র! "
ম্যাডহেড

10

উত্তরে একটি ছোট বর্ধন যা ব্যবহারিকভাবে সম্ভবত ব্যবহার করতে পারে।

$ git add modified-file.txt  
(OR $ git add .    ---- for all modified file)
$ git stash save --keep-index "Your Comment"

দ্রষ্টব্য: "গিট অ্যাড" ব্যতীত কাজ করে না (উদাহরণস্বরূপ পরিবর্তিত তবে ফাইল প্রতিশ্রুতি যুক্ত করার জন্য নয়)
alex_1948511

4

একটি কৌশল যা আপনাকে স্ট্যাশ করতে পারে তা নয়, এফডাব্লুআইডাব্লু:

git add -A
git commit -m "this is what's called stashing"       (create new stash commit)
git tag stash                               (mark the commit with 'stash' tag)
git reset HEAD~        (Now go back to where you've left with your working dir intact)

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


2

আপনি git stash createস্ট্যাশ প্রতিশ্রুতি তৈরি করতে এবং তারপরে এটি স্ট্যাশে সংরক্ষণ করতে পারেন git stash store:

git stash store $(git stash create) -m "Stash commit message"

এটিকে আরও সুবিধাজনক করার জন্য গিটের উলেফে সংরক্ষণ করা যায়:

git config --global alias.stash-keep '!git stash store $(git stash create)'

git stash-keep -m "Stash commit message"

মনে রাখবেন, এই করে না সবকিছু যে git stash pushআছে। উদাহরণস্বরূপ, এটি শাখার নামটি কমিটের সাথে যুক্ত করে না, যেমন " stash@{0}: On myBranch: Stash commit message"।


1
এটা ভালোবাস!! যদিও একটি সংশোধন: man git-stashবলেছেন -m <message>প্রতিশ্রুতিবদ্ধ হ্যাশের আগে আসতে হবে। নতুন গীতে কিছু পরিবর্তন বাদে।
ট্যানিয়াস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.