git - একটি গিট রিপোজিটরিতে প্রতিলিপি করা হয়েছে এমন ফাইলগুলি উপেক্ষা করুন




caching version-control (14)

আমি ইতিমধ্যে একটি গিট রিপোজিটরি আছে যে আমি একটি। .gitignore ফাইল যোগ। আমি কিভাবে ফাইল সূচী রিফ্রেশ করতে পারি তাই আমি যে ফাইলগুলিকে উপেক্ষা করতে চাই তা উপেক্ষা করা হয়?


'উত্তর' কমান্ডটি কী করে বেশ কিছু জানতাম না, আমি এটি দৌড়ে গিয়েছিলাম, আমার হতাশার জন্য। এটি পুনরাবৃত্তি আপনার git repo থেকে প্রতিটি ফাইল মুছে ফেলা।

উদ্ধারের জন্য স্ট্যাকওভারফ্লো ... কিভাবে একটি "git rm -r।" প্রত্যাবর্তন করবেন?

git reset HEAD

কৌশলটি ছিল, যেহেতু আমার কাছে এমন স্থানীয় ফাইলগুলি ছিল যা আমি ওভাররাইট করতে চাইনি।


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

আমার উত্তর থেকে এখানে: https://.com/a/11451916/406592


আপনার সংগ্রহস্থলের মধ্যে ইতিমধ্যে যোগ / সূচনা করা হয়েছে এমন একটি ফাইলকে আনচ্যাক করার জন্য, অর্থাৎ , ফাইলটি ট্র্যাকিং বন্ধ করুন, তবে এটি আপনার সিস্টেমে ব্যবহার থেকে মুছে ফেলুন না: git rm --cached filename

আপনার .gitignore এ থাকা প্রতিটি ফাইলটি .gitignore :

প্রথমে কোনও অসামান্য কোড পরিবর্তন করুন এবং তারপরে এই কমান্ডটি চালান:

git rm -r --cached .

এটি সূচী (স্টেজিং এলাকা) থেকে যে কোনও পরিবর্তিত ফাইল সরান, তারপরে কেবল চালান:

git add .

এটা কমিট করুন:

git commit -m ".gitignore is now working"

git rm --cached filename পূর্বাবস্থায় ফেরাতে - git rm --cached filename , git rm --cached filename git add filename ব্যবহার git add filename

git add . চলমান আগে আপনার সব গুরুত্বপূর্ণ পরিবর্তন প্রতিশ্রুতি নিশ্চিত git add . অন্যথা, আপনি অন্য ফাইলগুলিতে কোনও পরিবর্তন হারাবেন।


আপনি যদি এমন কোনও ফাইলের পরিবর্তনগুলি উপেক্ষা করার চেষ্টা করছেন যা ইতিমধ্যে সংগ্রহস্থলে ট্র্যাক করা হয়েছে (উদাহরণস্বরূপ একটি dev.properties ফাইল যা আপনার স্থানীয় পরিবেশের জন্য পরিবর্তন করতে হবে তবে আপনি এই পরিবর্তনগুলি চেক করতে চাইবেন না) আপনি যা করতে চান হল:

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

আপনি আবার পরিবর্তন ট্র্যাকিং শুরু করতে চান

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

Git-update-index (1) ম্যানুয়াল পৃষ্ঠা দেখুন

এছাড়াও যদি আপনি একটি গিট-রিসেট ( via ) no-skip-worktree জন্য এটি প্রয়োজন হয় তবে আপডেট-সূচকের জন্য skip-worktree এবং no-skip-worktree বিকল্পগুলি দেখুন।

আপডেট: লোকেদের জিজ্ঞাসা করা হচ্ছে যে, আপনার স্থানীয় ওয়ার্কস্পেসে বর্তমানে কোনও ফাইলগুলি "উপেক্ষা করা" (--assume-unchanged) দেখা করার জন্য এখানে একটি সুবিধাজনক (এবং নীচের মন্তব্য করা হয়েছে) উদীয়মান

$ git config --global alias.ignored = !git ls-files -v | grep "^[[:lower:]]"

আমার সার্ভারে লিনাক্স সার্ভারে (আমার স্থানীয় ডেভ ম্যাকের উপর সত্য নয়), যতক্ষন না আমি একটি তারকাচিহ্ন যোগ করি না ততক্ষণ ডিরেক্টরিগুলিকে উপেক্ষা করা হয়:

WWW / আর্কাইভ / *

আমি জানি না কেন, কিন্তু কয়েক ঘণ্টা আমাকে ছেড়ে দিল, তাই আমি শেয়ার করতে চেয়েছিলাম ...


আমি gitignore সঙ্গে একটি অদ্ভুত সমস্যা আছে। সবকিছু জায়গায় ছিল এবং সঠিক বলে মনে হচ্ছে। একমাত্র কারণ আমার জিগিনগোরকে "উপেক্ষা করা" ছিল, যে লাইন শেষের ম্যাক-ফরম্যাটে ছিল (\ r)। তাই সঠিক লাইন শেষের সাথে ফাইলটি সংরক্ষণ করার পরে (ভিআই ব্যবহার করে: সেট ff = unix) সবকিছু একটি যাদুমন্ত্রের মত কাজ করে!


আমি এই পদক্ষেপ অনুসরণ

git rm -r --cached .
git add .
git reset HEAD

তারপরে, git সব ফাইল মুছে ফেলবে (* আমার ক্ষেত্রে * .swp) যা উপেক্ষা করা উচিত।


উত্তর কেউ আমার জন্য কাজ।

পরিবর্তে:

  1. জিট-নিয়ন্ত্রিত ডিরেক্টরি থেকে ফাইলটি সরান
  2. গিট মধ্যে অপসারণ চেক করুন
  3. ফাইলটি গিট-নিয়ন্ত্রিত ডিরেক্টরির মধ্যে সরান

ফাইলটি সরানোর পরে, git এটি উপেক্ষা করবে।

খুব ডিরেক্টরি সঙ্গে কাজ করে!


একটি ফাইলকে আনচ্যাক করার জন্য যা ইতিমধ্যে আপনার রিপোজিটরিতে যোগ / সূচনা করা হয়েছে, অর্থাৎ ফাইলটি ট্র্যাকিং বন্ধ করুন কিন্তু এটি আপনার সিস্টেমে ব্যবহার থেকে মুছে git rm --cached filename : git rm --cached filename


জটিল সব জায়গায় উত্তর!

শুধু নিম্নলিখিত ব্যবহার করুন

git update-index --assume-unchanged filename

এটি এমন ফাইলগুলি মুছে দেবে যা আপনি মূল থেকে উপেক্ষা করবেন এবং আপনার কম্পিউটারের মাস্টার থেকে নয়!

তারপরে শুধু কমিট করুন এবং ধাক্কা!


যদি আপনি অনেকগুলি নজরদারি ফাইল ট্র্যাকিং বন্ধ করতে চান তবে আপনি কিছু কমান্ড সংযুক্ত করতে পারেন:

git ls-files -i --exclude-standard | xargs -L1 git rm --cached

এই উপেক্ষা করা ফাইল ট্র্যাকিং বন্ধ হবে। আপনি যদি ফাইল সিস্টেম থেকে ফাইলগুলি সরাতে চান তবে, --cached বিকল্পটি ব্যবহার করবেন না। আপনি অনুসন্ধান সীমিত করতে একটি ফোল্ডার নির্দিষ্ট করতে পারেন, যেমন:

git ls-files -i --exclude-standard -- ${FOLDER} | xargs -L1 git rm


যদি আপনি আপনার স্থানীয় সিস্টেম থেকে ফাইল মুছে না দিয়ে ট্র্যাকিং ফাইলটি থামাতে চান, তবে আমি config/database.yml ফাইলটি উপেক্ষা করতে পছন্দ করি। শুধু চেষ্টা করুন:

git rm --cached config/database.yml
# this will delete your file from git history but not from your local system.

এখন, এই ফাইলটি .gitignore ফাইলে যুক্ত করুন এবং পরিবর্তনগুলি করুন। এবং এখন থেকে, কনফিগারেশন / ডাটাবেস.এমএলএতে যেকোনো পরিবর্তন জিট দ্বারা ট্র্যাক করা হবে না।

$ echo config/database.yml >> .gitignore

ধন্যবাদ


যেমন dav_i বলছে, ফাইলটি রেপোতে রাখা এবং এখনো কোনও অতিরিক্ত কমিটি তৈরি ছাড়াই পরিবর্তনগুলি থেকে এটি সরানোর জন্য আপনি ব্যবহার করতে পারেন:

git rm -r --cached .

হ্যাঁ -। .gitignore সিস্টেম কেবলমাত্র গিট থেকে সংস্করণ নিয়ন্ত্রণের অধীনে নয় এমন ফাইলগুলিকে উপেক্ষা করে।

যদি আপনি ইতিমধ্যে git-add ব্যবহার করে test.txt নামক একটি ফাইল git-add , তবে test.txt তে .gitignore যোগ করা হবে। test.txt ট্র্যাক হওয়া পরিবর্তনগুলিতে এখনও পরিবর্তন হবে।

আপনি প্রথমে git rm test.txt করতে হবে এবং সেই পরিবর্তনটি করতে হবে। শুধুমাত্র তারপর test.txt পরিবর্তন করা হবে উপেক্ষা করা।






git-rm