git - আপনি কিভাবে একটি untracked ফাইল স্ট্যাশ করবেন?




git-stash (8)

অন্য কোথাও বলা হয়েছে, উত্তরটি git add করার জন্য git add উত্তর দিতে হবে। উদাহরণ:

git add path/to/untracked-file
git stash

যাইহোক, আরেকটি প্রশ্নের মধ্যেও প্রশ্ন উত্থাপিত হয়: আপনি যদি সত্যিই ফাইলটি যুক্ত করতে না চান তবে কী হবে? আচ্ছা, যতদূর আমি বলতে পারি, আপনাকে করতে হবে। এবং নিম্নলিখিত কাজ করবে না :

git add -N path/to/untracked/file     # note: -N is short for --intent-to-add
git stash

নিম্নরূপ, এই ব্যর্থ হবে:

path/to/untracked-file: not added yet
fatal: git-write-tree: error building trees
Cannot save the current index state

তো তুমি কি করতে পার? আচ্ছা, আপনাকে অবশ্যই ফাইলটি যুক্ত করতে হবে, তবে , আপনি এটি পরে কার্যকরভাবে যুক্ত করতে পারেন, git rm --cached :

git add path/to/untracked-file
git stash save "don't forget to un-add path/to/untracked-file" # stash w/reminder
# do some other work
git stash list
# shows:
# [email protected]{0}: On master: don't forget to un-add path/to/untracked-file
git stash pop   # or apply instead of pop, to keep the stash available
git rm --cached path/to/untracked-file

এবং তারপর আপনি একই কাজ করতে পারেন, যেমনটি আপনি git add অ্যাডের আগে ছিলেন (অর্থাত্ একটি অননুমোদিত ফাইল যা path/to/untracked-file নামে পরিচিত; প্লাস ফাইলগুলি ট্র্যাক করার জন্য আপনাকে অন্য কোনও পরিবর্তন করতে পারে)।

এতে একটি কার্যপ্রবাহের আরেকটি সম্ভাবনা যেমন কিছু হবে:

git ls-files -o > files-to-untrack
git add `cat files-to-untrack` # note: files-to-untrack will be listed, itself!
git stash
# do some work
git stash pop
git rm --cached `cat files-to-untrack`
rm files-to-untrack

[দ্রষ্টব্য: @ মানকোকাপ্যাকের একটি মন্তব্যে যেমন উল্লেখ করা হয়েছে, আপনি git ls-files কমান্ডে git ls-files --exclude-standard যোগ করতে চাইতে পারেন (তাই, git ls-files -o --exclude-standard )।]

... যা সহজেই স্ক্রিপ্ট করা যেতে পারে - এমনকি এলিয়াসগুলিও করতে হবে (জশ সিনট্যাক্সে উপস্থাপিত; প্রয়োজনীয় হিসাবে সামঞ্জস্য করুন) [এছাড়াও, আমি ফাইল নামটি ছোট করেছি যাতে এটির উত্তরটি স্ক্রল করা ছাড়া স্ক্রিনে সমস্ত ফিট করে; আপনার পছন্দসই একটি বিকল্প ফাইল নাম পরিবর্তন করতে বিনা দ্বিধায়]:

alias stashall='git ls-files -o > .gftu; git add `cat .gftu`; git stash'
alias unstashall='git stash pop; git rm --cached `cat .gftu`; rm .gftu'

উল্লেখ্য, পরেরটি শেল স্ক্রিপ্ট বা ফাংশন হিসাবে ভাল হতে পারে, git stash প্যাটার্ন করতে চান না তবে প্যারামিটারটি সরবরাহ করতে প্যারামিটারগুলি সরবরাহ করার অনুমতি দেয় এবং / অথবা পরিবর্তে একটি নির্দিষ্ট স্ট্যাশ উল্লেখ করতে সক্ষম হতে পারে। শুধু শীর্ষ এক গ্রহণ। সম্ভবত এই (উপরে দ্বিতীয় উপনাম, পরিবর্তে) [সাদা জায়গা স্ক্রোলিং ছাড়া মাপসই করা; বর্ধিত সুস্পষ্টতা জন্য পুনরায় যোগ করুন]:

function unstashall(){git stash "${@:-pop}";git rm --cached `cat .gftu`;rm .gftu}

দ্রষ্টব্য : এই ফর্মটিতে আপনাকে স্ট্যাশ আইডেন্টিফায়ার সরবরাহ করার জন্য একটি ক্রিয়া যুক্তি এবং সনাক্তকারী সরবরাহ করতে হবে, যেমন unstashall apply [email protected]{1} বা unstashall pop [email protected]{1} unstashall apply [email protected]{1}

অবশ্যই আপনি আপনার। .zshrc বা সমতুল্য দীর্ঘমেয়াদী বিদ্যমান সমতুল্য রাখতে চাই।

আশা করি এই উত্তরটি কারো পক্ষে সহায়ক, একসঙ্গে সবকিছু একত্রিত করা।

আমি একটি ফাইল, প্লাস একটি নতুন ফাইল পরিবর্তন আছে, এবং আমি অন্য কাজ স্যুইচ করার সময় তাদের দূরে রাখতে গিট স্ট্যাশ ব্যবহার করতে চান। কিন্তু নিজেই গিট স্ট্যাশ বিদ্যমান ফাইল শুধুমাত্র পরিবর্তন স্ট্যাচ; নতুন ফাইল আমার কাজের গাছ অবশেষ, আমার ভবিষ্যত কাজ cluttering। আমি কিভাবে এই untracked ফাইল স্ট্যাশ করবেন?



আমি একই বৈশিষ্ট্য চিন্তা এবং ইচ্ছা ব্যবহার করা হয়। কিন্তু সময়ের সাথে সাথে, আমি লক্ষ্য করেছি এটি সত্যিই প্রয়োজন হয় না। যখন আপনি স্ট্যাশ, নতুন ফাইল ছেড়ে ঠিক আছে। কিছুই "খারাপ" তাদের সাথে ঘটতে পারে না (যখন আপনি অন্য কিছু পরীক্ষা করেন, গিট ত্রুটিযুক্ত হবে এবং বিদ্যমান অটোক্রেড ফাইলকে ওভাররাইট করবে না)

এবং সাধারণত git stash এবং git stash pop মধ্যে সময় ফ্রেমটি ছোট না হলেও, আপনাকে আবার অপ্রকাশিত ফাইলটির প্রয়োজন হবে। তাই আপনি যদি অন্য কিছুতে কাজ করছেন ( git stash এবং git stash pop ) যখন git status দেখানো ফাইলটির অসুবিধার কথাটি কম, তখন কাজ এবং প্রয়োজনীয় মনোযোগের কারণে এটি অসুবিধে হতে পারে। আপনার স্ট্যাশে untracked ফাইল যোগ করার চেষ্টা করুন।


আমি ভেবেছিলাম এটি ফাইলটি বিদ্যমান, যা স্টেজিং এলাকায় এটির সমস্ত সামগ্রী সম্পাদন করার পরিবর্তে, এবং তারপরে git stash কল করার জন্য git stash বলার মাধ্যমে সমাধান করা যেতে পারে। আরাকানিদ কীভাবে প্রাক্তন করবেন তা describes

git add --intent-to-add path/to/untracked-file

অথবা

git update-index --add --cacheinfo 100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 path/to/untracked-file

যাইহোক, পরের কাজ করে না:

$ git stash
b.rb: not added yet
fatal: git-write-tree: error building trees
Cannot save the current index state

গিট 1.7.7 হিসাবে, git stash --include-untracked বিকল্প (বা স্বল্প হাতের --include-untracked ) গ্রহণ করে। আপনার স্ট্যাশে অট্যাকড ফাইলগুলি অন্তর্ভুক্ত করতে নিম্নলিখিত কমান্ডগুলি ব্যবহার করুন:

git stash --include-untracked
git stash -u

সাবধান, আপনার জিটিগনোর ফাইলের মধ্যে কোন ডিরেক্টরি / * এন্ট্রি থাকলে আপনার এটির ফাইলগুলি স্থায়ীভাবে মুছবে।


গিট সংস্করণ 2.8.1: আমার জন্য নিম্নলিখিত কাজ করে।

নাম ছাড়া stash মধ্যে সংশোধিত এবং untracked ফাইল সংরক্ষণ করুন

git stash save -u

একটি নামের সাথে স্ট্যাশ সংশোধিত এবং অট্যাকড ফাইল সংরক্ষণ করুন

git stash save -u <name_of_stash>

আপনি পপ ব্যবহার করতে পারেন এবং নিম্নরূপ অনুসরণ করতে পারেন।

git stash pop

git stash apply [email protected]{0}

ধরুন নতুন এবং অট্যাকড ফাইলটি বলা হয়: "views.json"। আপনি যদি আপনার অ্যাপ্লিকেশানটি স্ট্যাশ করে শাখা পরিবর্তন করতে চান তবে আমি সাধারণত টাইপ করি:

git add views.json

তারপর:

git stash

এবং এটা স্ট্যাশ করা হবে। তারপর আমি শুধু সঙ্গে শাখা পরিবর্তন করতে পারেন

git checkout other-nice-branch


সূচী ফাইল যোগ করুন:

git add path/to/untracked-file
git stash

সূচকের সম্পূর্ণ সামগ্রী, প্লাস বিদ্যমান ফাইলগুলির মধ্যে কোনও অসংলগ্ন পরিবর্তন, সবগুলি স্ট্যাশে এটি তৈরি করবে।





git-stash