ডিরেক্টরিতে গিট আপডেট-ইনডেক্স - এসিউম-অপরিবর্তিত


102

গিট 1.7.12

আমি একটি প্রদত্ত ডিরেক্টরি নীচে সমস্ত ফাইল চিহ্নিত - অপরিবর্তিত হিসাবে চিহ্নিত করতে চাই।

1) git update-index --assume-unchaged dir/দেয় "উপেক্ষা করার পথ"।

2) git update-index --assume-unchaged dir/*দ্রুত ব্যর্থ হয় কারণ এটি ফাইলগুলির মুখোমুখি হবে যা ট্র্যাক করা হচ্ছে না, সুতরাং এটি "মারাত্মক: ফাইল চিহ্নিত করতে অক্ষম" এবং সরিয়ে দেয়।

3) চিহ্নিত করতে ফাইলগুলির একটি তালিকা তৈরি করার চেষ্টা করুন। cdপছন্দসই ডিরেক্টরিতে এবং তারপর চালান git ls-files | tr '\n' ' ' | git update-index --assume-unchanged। এটি কোনও ত্রুটি বার্তা তৈরি করে না, তবে এটি ফাইলগুলিকে সফলভাবে চিহ্নিত করে না। কমান্ডের প্রথম অংশটি, git ls-files | tr '\n' ' 'আমি চিহ্নিত করতে চাইছি এমন সমস্ত ফাইলের সঠিকভাবে একটি স্থান বিস্মৃত তালিকা তৈরি করে। আমি যদি কমান্ড-লাইনে সেই কমান্ডের আউটপুট অনুলিপি করে আটকান, তবে git update-indexকমান্ডটি কাজ করে। পাইপ দিয়ে কী কাজ করছে না?

না, dir.gitignore এ যুক্ত করা আমার পক্ষে যথেষ্ট নয় । আমার কাছে এই ফাইলগুলি সংগ্রহস্থলের মধ্যে থাকা দরকার তবে স্থানীয়ভাবে অনাকাঙ্ক্ষিত পরিবর্তনগুলি করা হবে যা ব্যবহারকারীরা এড়াতে পারে সেজন্য এড়ানো উচিত।


আপনি mispelled --assume-uncha এন জিইডি
আদম Mudianto

উত্তর:


177

git update-index ফাইলের নামগুলি তার কমান্ড লাইনে চায়, এটির স্ট্যান্ডার্ড ইনপুট নয়।

ধাপ 1:

cd যে ফোল্ডারে আপনি ধরে নিতে চান তা অপরিবর্তিত রয়েছে

ধাপ ২:

আপনি এটি যে কোনটি করতে পারেন:

git update-index --assume-unchanged $(git ls-files | tr '\n' ' ')

বা

git ls-files | tr '\n' ' ' | xargs git update-index --assume-unchanged

যদিও উভয় ক্ষেত্রেই ফাঁকা ফাইলগুলির নাম সমস্যাযুক্ত হবে। আপনার যদি এটি থাকে তবে আপনি এটি ব্যবহার করতে পারেন:

git ls-files -z | xargs -0 git update-index --assume-unchanged

সম্পাদনা: সম্পর্কিত বিষয়ে @ ম্যাথিউশার্লি থেকে অন্তর্ভুক্ত ইনপুট git ls-files -z

উইন্ডোজ কমান্ড

দ্রষ্টব্য: আপনি উইন্ডোতে থাকলে এই কমান্ডগুলি চালাতে গিট ব্যাশ ব্যবহার করুন


4
এফওয়াইআই, সে `| tr '\ n' '' `বিট অপ্রয়োজনীয়।
ভ্যাক্লাভ স্লাভাক

7
@ টোটাবার্গ: আপনি কেবল ব্যবহার করতে পারেনgit ls-files -z
ম্যাথু শার্লে

4
@ টিওয়ালবার্গ এই কমান্ডটি কীভাবে পূর্বাবস্থায় আনবেন "গিট এলএস-ফাইল-জেড | xargs -0 গিট আপডেট-ইনডেক্স - এসসুম-অপরিবর্তিত"
মোহাম্মদ হুসেন

4
@ মোহাম্মদহুসাইন git ls-files -z | xargs -0 git update-index --no-assume-unchanged, আমি ভাবব ...
twalberg

4
git ls-files -z | git update-index -z --stdinপরিষ্কার।
জেড

22

findগনুহ Findutils থেকে কমান্ড একটি আছে -execযা ব্যবহার করার অসুবিধা অধিকাংশ সরিয়ে ফেলা হবে বিকল্প xargsযদিও তার বাক্য গঠন একটু বিশেষ হয়। এটি স্পেস সহ ফাইলের নামগুলির সাথে পুরোপুরি ডিল করে।

এই কমান্ডটি গিট পাবেন যে তালিকাবদ্ধ ডিরেক্টরিতে এবং এর অধীনে সমস্ত ফাইল অপরিবর্তিত রয়েছে তা ধরে নিতে:

find path/to/dir -type f -exec git update-index --assume-unchanged '{}' \;

প্রতিটি আর্গুমেন্ট সন্ধান করে -execযতক্ষণ না হয় ;(যা আপনার শেলটি এটি না খেয়ে ফেলে এড়াতে হবে) এবং পাওয়া প্রতিটি ফাইলের জন্য এটি একবার চালায়, যখন প্রতিস্থাপিত {}ফাইলটির নামের সাথে (আবার, একক উদ্ধৃত যাতে আপনার শেল এটি খাবে না)।

ব্যবহার findএর ম্যাচিং মানদণ্ড (সর্বোচ্চ পুনরাবৃত্তির গভীরতা ম্যাচ একটি ফাইল বা ডিরেক্টরির থাকা অবস্থায় ফাইলের নাম একটি এক্সপ্রেশনের সাথে মেলে কিনা) এবং -execআপনাকে শক্তিশালী সব সাজানোর কাজ করতে পারেন।

findকমান্ডের অন্যান্য বাস্তবায়ন সম্পর্কে নিশ্চিত নয় । ওয়াইএমএমভি


4
-execএকটি মান বিকল্প । আপনি -exec git update-index --assume-unchanged {} +(স্ট্যান্ডার্ড দ্বারাও সংজ্ঞায়িত) এটি করতে পারেন যা একবারে কমান্ডের একাধিক ফাইলের নাম পাস করে, গিট কমান্ডটি চালিত হওয়ার সংখ্যা হ্রাস করে।
টম ফেনেক

16

ডিরেক্টরি নাম যুক্ত করুন .git/info/exclude। এটি তালাবিহীন ফাইলগুলির জন্য কাজ করে।


এই কাজ দুর্দান্ত! আপনি যদি জানতেন যে এটি ফাইলগুলির সাথেও কাজ করে?
betomoretti

4
কিন্তু এটি তালিকার বাইরে থাকা ফাইলগুলিকে গিথুব দেয় না! রেকর্ডগুলি থেকে এড়িয়ে যাওয়ার কিন্তু বাস্তবে এগুলি রাখার কোনও সম্ভাব্য উপায় কি !?
মাহমুদ জাল্ট

2

ইয়াপ,

git update-index --assume-unchanged

ডিরেক্টরি দিয়ে নয় কেবল ফাইল নিয়ে কাজ করে। আমি মনে করি, দ্রুততর একটি উপায়:

cd dir
ls | xargs -l git update-index --assume-unchanged

4
ব্যবহার করার পরিবর্তে cd, আপনি একটি চূড়ান্ত আর্গুমেন্ট হিসাবে Dir পাস করতে পারেন: git ls-files -- $DIR | xargs -l git update-index --assume-unchanged -- $DIR
kzh
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.