গিট আপডেট-ইনডেক্স - পূর্বাভাস-অপরিবর্তিত <ফাইল> পূর্বাবস্থায় ফিরে আসুন


462

আপনি যেভাবে গিটকে একটি বিশেষ দির / ফাইল দেখা / পর্যবেক্ষণ করতে উপেক্ষা করছেন। আপনি কেবল এটি চালান:

git update-index --assume-unchanged <file>

এখন আপনি কীভাবে এটিকে পূর্বাবস্থায় ফিরিয়ে আনবেন যাতে তারা আবার দেখা হয়? (আসুন একে আন-ধরে নেওয়া যাক।)


5
কেবলমাত্র একটি নোট বলার জন্য যে এটি মনে হচ্ছে যে স্কিপ-ওয়ার্ক্রিট্রি সমস্ত সম্ভাবনায় রয়েছে যা অনুমান-অপরিবর্তিতের চেয়ে আপনি ব্যবহার করা ভাল, যদি না গিটের অভিনয় আপনার সমস্যা হয়। stackoverflow.com/questions/13630849/...
GreenAsJade

উত্তর:


587

পূর্বাবস্থায় / প্রদর্শন দিরের / ফাইলগুলি পেতে যেগুলি এটি অপরিবর্তিত বলে ধরে নিয়েছে :

git update-index --no-assume-unchanged <file>

এটি assume-unchangedচালিত দির / ফাইলগুলির একটি তালিকা পেতে :

git ls-files -v|grep '^h'


7
আপনার গ্রেপ স্টেটমেন্টের সামান্য উন্নতি, এটি সমস্ত উপেক্ষা করা ফাইলগুলি ধরার জন্য '^ [অ্যাজ]' ব্যবহার করতে পারে, কারণ প্রথম বর্ণের ট্যাগটি 'এইচ' / 'এইচ' ব্যতীত অন্য বর্ণগুলি হতে পারে। Git-scm.com/docs/git-ls-files থেকে : এই অপশনটি প্রতিটি লাইনের শুরুতে নিম্নলিখিত ট্যাগগুলি (একটি স্থান দ্বারা অনুসরণ করা) সহ ফাইলের স্থিতি সনাক্ত করে: এইচ :: ক্যাশেড এস :: স্কিপ-ওয়ার্ক্রি এম: : আনজার্জড আর :: মুছে ফেলা / মুছে ফেলা সি :: সংশোধিত / পরিবর্তিত কে :: মারা
যাবেন

8
আর একটি দরকারী কৌশল হল git ls-files -v|grep '^h'|cut -c3-, যা আপনাকে "এইচ" উপসর্গ ছাড়াই কেবল ফাইলের নাম দেবে।
রিটসাম

9
আপনি যদি ফাইলগুলি আর জানেন না তবে assume-unchangedকেবল ব্যবহার করুন git update-index --really-refresh। এই আদেশের সাহায্যে আপনার git ls-filesপ্রথমে ফাইলগুলি সন্ধান করার দরকার নেই ।
TheDmi

102

আপনি যদি প্রায়শই ব্যবহার করেন এমন আদেশটি যদি হয় - তবে আপনি এটির জন্য একটি উপনাম রাখার বিষয়টিও বিবেচনা করতে পারেন। আপনার গ্লোবাল যোগ করুন .gitconfig:

[alias]
    hide = update-index --assume-unchanged
    unhide = update-index --no-assume-unchanged

কীভাবে একটি উপকরণ সেট করবেন (যদি আপনি ইতিমধ্যে জানেন না):

git config --configLocation alias.aliasName 'command --options'

উদাহরণ:

git config --global alias.hide 'update-index --assume-unchanged'
git config... etc

এটি আপনার সংরক্ষণ করার পরে .gitconfig, আপনি একটি ক্লিনার কমান্ড চালাতে পারেন।

git hide myfile.ext

অথবা

git unhide myfile.ext

এই গিট ডকুমেন্টেশন খুব সহায়ক ছিল।

মন্তব্য অনুসারে, বর্তমানে কোন ফাইলগুলি গোপন করা হচ্ছে তা খুঁজে বের করার জন্য এটিও একটি সহায়ক উপমা :

[alias]
    hidden = ! git ls-files -v | grep '^h' | cut -c3-

2
এই উপনামটি খুব hidden = ! git ls-files -v | grep '^h' | cut -c3-
কার্যকরী

42

গিট আপডেট-ইনডেক্স ফাংশনের একাধিক বিকল্প রয়েছে যা আপনি নীচের মতো টাইপ করতে পারেন:

git update-index --help

এখানে আপনি বিভিন্ন বিকল্প পাবেন - কীভাবে ফাংশন আপডেট-ইনডেক্সটি পরিচালনা করবেন।

[যদি আপনি ফাইলের নাম জানেন না]

git update-index --really-refresh 

[যদি আপনি ফাইলের নাম জানেন]

git update-index --no-assume-unchanged <file>

উপেক্ষা তালিকার মধ্যে যুক্ত করা সমস্ত ফাইলকে ফিরিয়ে আনবে।

git update-index --assume-unchanged <file>

গিট আপডেট-ইনডেক্স - সত্যই রিফ্রেশ করুন, আমি যে সমস্ত অনুমান-অপরিবর্তিত রেখেছি তা পূর্বাবস্থায় ফিরিয়ে আনুন, টিপটির জন্য ধন্যবাদ
সেরজিও

git update-index --no-assume-unchanged <file>আমার জীবন বাঁচিয়েছে .. ঠিক আছে, আমি আবার ফোল্ডারটি আবার সিঙ্ক করতে পারি, তবে আমি এই সমস্যার জন্য একটি "বাস্তব" সমাধান চাইছিলাম।
ক্যাগাটে উলুবাই

38

আমি ধরে নিলাম (হি) আপনি বোঝাতে চেয়েছেন --assume-unchanged, যেহেতু আমি কোনও --assume-changedবিকল্প দেখছি না । বিপরীত --assume-unchangedহয় --no-assume-unchanged


32

অতিরিক্ত ডকুমেন্টেশন লিঙ্ক এবং সংক্ষিপ্তनाव সহ @ অ্যাডারডিজাইন, @ অ্যাডস ওয়েবওয়ার্ক এবং @ অংকিত বিশ্বকর্মা এবং @ বিডোসারার, @ রিটসাম, @ স্যানফ, এবং @ টোরিকের মন্তব্যগুলি থেকে আসল মূল উত্তরগুলি সংশ্লেষিত করতে ...

বেসিক কমান্ড

করার একটি ফাইল রিসেট যে অনুমান-অপরিবর্তিত স্বাভাবিক অবস্থায় ফিরিয়ে:

git update-index --no-assume-unchanged <file>

অনুমান-অপরিবর্তিত সমস্ত ফাইলের তালিকা করতে :

git ls-files -v | grep '^[a-z]' | cut -c3-

করার সব রিসেট অনুমান-অপরিবর্তিত ফাইল স্বাভাবিক অবস্থায় ফিরিয়ে:

git ls-files -v | grep '^[a-z]' | cut -c3- | xargs git update-index --no-assume-unchanged --

দ্রষ্টব্য: এই কমান্ডটি অন্য কোথাও তালিকাভুক্ত হয়েছে এমন সমস্ত অনুমান-অপরিবর্তিত ফাইলকে আর পুনরায় সেট করতে দেখা যায় না (আমি বিশ্বাস করি এটি এর আগে ব্যবহৃত হয়েছিল এবং সমাধান হিসাবে এটি পূর্বে তালিকাভুক্ত হয়েছিল):

git update-index --really-refresh

শর্টকাট

এই সাধারণ কাজগুলিকে গিটে কার্যকর করা সহজ করতে আপনার ব্যবহারকারীর জন্য নিম্নলিখিত উপন্যাস বিভাগটি যুক্ত / আপডেট করুন .gitconfig(যেমন ~/.gitconfigএকটি * নিক্স বা ম্যাকোস সিস্টেমে):

[alias]
    hide = update-index --assume-unchanged
    unhide = update-index --no-assume-unchanged
    unhide-all = ! git ls-files -v | grep '^[a-z]' | cut -c3- | xargs git update-index --no-assume-unchanged --
    hidden = ! git ls-files -v | grep '^[a-z]' | cut -c3-

1
এর জন্য git hidden, আপনি শেল !hidden = ! git ls-files -v | grep '^h' | cut -c3-
অ্যালিয়াস

1
--really-refreshসূচক ফাইলগুলিতে অনুমান-অপরিবর্তিত ফ্ল্যাগগুলি সাফ করে না (বা আর তা করবে না, সম্ভবত এটি একবারে করেছিল)।
টেরিক

আপনাকে ধন্যবাদ, টোরেক! আপনি বর্ণিত আচরণটি আমি নিশ্চিত করেছি এবং আমি "সমস্ত পুনরায় সেট করুন" মামলার ভিন্ন সমাধান সহ উত্তরটি আপডেট করেছি।
কেইন

20

আপনি যদি প্রয়োগ করা সমস্ত ফাইলকে পূর্বাবস্থায় ফিরিয়ে আনতে চান তবে যে কোনও স্ট্যাটাসের সাথে অপরিবর্তিত রয়েছে তা ধরে নিই, কেবল ক্যাশেড নয় (গিটটি এটিকে নিম্নরূপে অক্ষর দ্বারা চিহ্নিত করে), আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন:

git ls-files -v | grep '^[a-z]' | cut -c 3- | tr '\012' '\000' | xargs -0 git update-index --no-assume-unchanged
  1. git ls-files -v সমস্ত ফাইল তাদের স্থিতি সহ মুদ্রণ করবে
  2. grep '^[a-z]' ফাইলগুলি ফিল্টার করবে এবং কেবল অপরিবর্তিত হিসাবে ধরে নেবে
  3. cut -c 3- স্থিতিটি সরিয়ে ফেলবে এবং 3-তম বর্ণ থেকে শেষ পর্যন্ত কেবল পথ ছাড়বে
  4. tr '\012' '\000' লাইন চরিত্রের শেষ (\ 012) শূন্য অক্ষর (\ 000) এ প্রতিস্থাপন করবে
  5. xargs -0 git update-index --no-assume-unchangedgit update-index --no-assume-unchangedপূর্বাবস্থায় ফিরে আসার জন্য শূন্য অক্ষর দ্বারা পৃথক সমস্ত পাথ পাস করবে

এটি তাই দরকারী। বিস্তারিত তথ্যের জন্য ধন্যবাদ!
চমিত্রা তেতুয়ারা

11

যোগ করা হচ্ছে @adardesignএর উত্তর, যদি আপনি যে যোগ করা হয়েছে সমস্ত ফাইল রিসেট করতে চান assume-unchangedতালিকার no-assume-unchangedএক বারেই, আপনি নিম্নলিখিতগুলি করতে পারেন:

git ls-files -v | grep '^h' | sed 's/^..//' | sed 's/\ /\\ /g' | xargs -I FILE git update-index --no-assume-unchanged FILE || true

এটি কেবল গ্রেপ থেকে দুটি অক্ষরের আউটপুট সরিয়ে ফেলবে "h ", তারপরে ফাইলের নামগুলিতে উপস্থিত থাকা যে কোনও ফাঁকা স্থান থেকে রক্ষা পাবে এবং শেষ পর্যন্ত || trueলুপের কিছু ফাইলের ত্রুটির কারণে কমান্ডটি অকালপূর্বক বন্ধ করতে বাধা দেবে।


4

আপনি যদি গিট এক্সটেনশনগুলি ব্যবহার করছেন তবে নীচের পদক্ষেপগুলি অনুসরণ করুন:

  1. উইন্ডো কমিট করতে যান।
  2. ওয়ার্কিং ডিরেক্টরি পরিবর্তনগুলির নামকরণের ড্রপডাউনটিতে ক্লিক করুন ।
  3. অনুমান-অপরিবর্তিত ফাইলগুলি বিকল্প দেখান নির্বাচন করুন
  4. আপনি যে ফাইলটি মুছে ফেলতে চান তাতে ডান ক্লিক করুন।
  5. কোনও অনুমান অপরিবর্তিত রাখুন নির্বাচন করুন ।

তুমি পেরেছ.


0

এখানে এমন কিছুই নেই যা coveredাকা নেই। তবে আমার 2 সেন্ট যোগ করতে চাই। কখনও কখনও, আমি একটি বিল্ড চালনা করি এবং এটি অনেকগুলি ফাইল পরিবর্তন করে এবং তারপরে আমি কোনও কিছুর উপরে কাজ করতে চাই, সুতরাং এই আদেশটি আমাকে সত্যিই অনেক সাহায্য করে।

git update-index --assume-unchanged `git status | grep modified | sed 's|modified:||g'| xargs`

আশা করি অন্য কেউও এটির কাজে লাগবে।


আমি মনে করি .gitignoreআপনার বিল্ড আর্টফ্যাক্টগুলি উপেক্ষা করার জন্য আপনি ব্যবহার করে উপকৃত হবেন ।
নিক

1
আমার কাছে .gitignoreতবে তা অনেক সময় আমার অভিজ্ঞতা পর্যাপ্ত নয়। তবে আপনি যে প্রসঙ্গে এটি বলছেন তা আমি বুঝতে পারি।
ত্যাগী অখিলেশ

0

উইন্ডোজে আমার জন্য সমাধানগুলির কোনওটিই কাজ করেনি - এটি ফাইলের স্থিতির Hচেয়ে মূলধন ব্যবহার করে বলে মনে হয় hএবং গ্রেপ কমান্ডের জন্য অতিরিক্ত ক্যারেটের প্রয়োজন রয়েছে ^পাশাপাশি লাইনটির শুরুতে পাশাপাশি পরবর্তী চরিত্রটিকে উপেক্ষা করারও প্রতিনিধিত্ব রয়েছে।

উইন্ডোজ সমাধান

  1. গিট ব্যাশ খুলুন এবং প্রাসঙ্গিক শীর্ষ স্তরের ডিরেক্টরিতে পরিবর্তন করুন।
  2. git ls-files -v | grep '^^H' সমস্ত আনকচ করা ফাইলের তালিকা করতে
  3. git ls-files -v | grep '^^H' | cut -c 3- | tr '\012' '\000' | xargs -0 git update-index --no-skip-worktree এর মাধ্যমে সম্পন্ন সমস্ত ফাইলের স্কিপিং ফাইলগুলিকে পূর্বাবস্থায় ফিরিয়ে আনতে update-index --skip-worktree
  4. git ls-files -v | grep '^^H]' | cut -c 3- | tr '\012' '\000' | xargs -0 git update-index --no-assume-unchanged এর মাধ্যমে সম্পন্ন সমস্ত ফাইলের স্কিপিং ফাইলগুলিকে পূর্বাবস্থায় ফিরিয়ে আনতে update-index --assume-unchanged
  5. git ls-files -v | grep '^^H' সমস্ত অনাবৃত ফাইলের তালিকা তৈরি করতে এবং উপরের কমান্ডগুলি কাজ করেছে কিনা তা যাচাই করতে - এটি এখন আর কোনও কিছু ফেরত দেবে না

-1

আপনি যদি গ্রহনটি ব্যবহার করে থাকেন তবে আপনি নিম্নলিখিতগুলি কার্যকর পেতে পারেন:

গ্রহনের সাথে কোনও অপরিবর্তিত থাকে না


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