প্রতিশ্রুতি পরে .gitignore


210

আমার কাছে গিথুব-এ একটি গিটার সংগ্রহস্থল রয়েছে। অনেক ফাইল সংগঠনের পর, আমি বুঝতে করছি আমি তৈরি করতে হবে যে .gitignoreএবং বাদ দিন .exe, .objফাইল।

যাইহোক, এটি সংগ্রহস্থল থেকে এই প্রতিশ্রুতিবদ্ধ ফাইলগুলি স্বয়ংক্রিয়ভাবে সরানো হবে? জোর করার কোন উপায় আছে কি?


6
ভবিষ্যতের গুগলরা এটি অত্যন্ত কার্যকর বলে মনে করতে পারে। সুচিনিক্ট এবং বিন্দুতে: git-tower.com/learn/git/faq/ignore-tracked-files-in-git
অস্টিন ডিন

উত্তর:


331

না আপনি রেপোতে ইতিমধ্যে প্রতিশ্রুতিবদ্ধ এমন কোনও ফাইলকে এটিতে যুক্ত হওয়ার কারণে সরাতে বাধ্য করতে পারবেন না .gitignore

যা শুরু করেছো git rm --cachedফাইল যেগুলি আপনি রেপো তে চাই না মুছে ফেলার জন্য। (- সম্ভবত আপনি স্থানীয় অনুলিপি রাখতে চান কিন্তু রেপো থেকে অপসারণ করতে চান তাই ক্যাচ করা হয়েছে you)

git rm --cached /\*.exe

(দ্রষ্টব্য * শেল থেকে উদ্ধৃতি দেওয়া হয়েছে - এটি শিট নয়, শিট নয়, ফাইল এবং উপ-ডিরেক্টরিগুলির পথের নাম প্রসারিত করতে দেয়)


6
@ মাধুর আহুজা আসলে আপনি যদি git rm /\*.exeএটি করেন তবে আপনার রেপোতে সমস্ত এক্সেস মুছে ফেলা হবে
মনোজাল্ড

4
/ \ এর জন্য কি?
কোস্টা

5
@ কোস্টা তারা সেখানে রয়েছেন তারাটিটি থেকে বাঁচার জন্য, শেলটির ব্যাখ্যা থেকে বিরত রাখতে, যেমন এটি করা হয়েছে git
ল্যাম্বার্ট

2
সতর্কতা: ফাইলগুলি স্থানীয়ভাবে রাখা হয়, এটি সত্য ... তবে অন্যান্য ব্যবহারকারীরা git pullতাদের ফাইলগুলি মোছা দেখবেন।
বাই স্ক্রিপ্টস

42

যাইহোক, এটি সংগ্রহস্থল থেকে এই প্রতিশ্রুতিবদ্ধ ফাইলগুলি স্বয়ংক্রিয়ভাবে সরানো হবে?

না। একটি বিদ্যমান .gitignoreথাকা সত্ত্বেও আপনি -f(বল) পতাকাটি দিয়ে "উপেক্ষা" ফাইলগুলি মঞ্চ করতে সক্ষম । যদি তারা ফাইলগুলি ইতিমধ্যে কমিট হয় তবে সেগুলি স্বয়ংক্রিয়ভাবে সরানো হয় না।

git rm --cached path/to/ignored.exe

তার মানে কি আমি পৃথকভাবে প্রতিটি .exe অপসারণ করেছি
মধুর আহুজা

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

30

আপনি যদি ইতিমধ্যে পরিবর্তনগুলি ধাক্কা না দিয়ে থাকেন:

git rm -r --cached .
git add .
git commit -m 'clear git cache'
git push

15

আমাকে .idea এবং টার্গেট ফোল্ডারগুলি সরিয়ে ফেলতে হয়েছিল এবং সমস্ত মন্তব্য পড়ার পরে এটি আমার পক্ষে কাজ করেছে:

git rm -r .idea
git rm -r target
git commit -m 'removed .idea folder'

এবং তারপরে মাস্টারকে চাপ দিন


.ideaআমার সমস্যাটি ছিল আমার ধারণা এটি আপনারও ছিল:)
অলিভিয়ার পন্স

5

যাইহোক, এটি সংগ্রহস্থল থেকে এই প্রতিশ্রুতিবদ্ধ ফাইলগুলি স্বয়ংক্রিয়ভাবে সরানো হবে?

না।

এটি করার জন্য 'সেরা' রেসিপিটি git filter-branchএখানে লিখিতভাবে ব্যবহার করা হচ্ছে :

গিট-ফিল্টার-শাখার ম্যান পৃষ্ঠাতে বিস্তৃত উদাহরণ রয়েছে।

বিঃদ্রঃ আপনি ইতিহাস আবার লিখতে হবে। আপনি যদি দুর্ঘটনাক্রমে যুক্ত হওয়া ফাইলগুলি সমন্বিত কোনও সংশোধনী প্রকাশ করেন তবে এটি সেই সর্বজনীন শাখার ব্যবহারকারীদের জন্য সমস্যা তৈরি করতে পারে। তাদের অবহিত করুন বা সম্ভবত ফাইলগুলি অপসারণ করার জন্য আপনার কতটা খারাপ প্রয়োজন তা ভেবে দেখুন।

দ্রষ্টব্য ট্যাগগুলির উপস্থিতিতে সর্বদা --tag-name-filter catবিকল্পটি ব্যবহার করুন git filter-branch। এটি কখনই ব্যথিত হয় না এবং আপনাকে মাথা ব্যাথা বাঁচিয়ে দেয় যখন আপনি পরে বুঝতে পারেন যে এটির প্রয়োজন ছিল


আমি এই কমান্ডটি চালিয়েছি এটি 57c1f1f04a3ed01f50c3260714cfc82c973ac816 (3/3) সতর্কতা: রেফ 'রেফ / মাথা / মাস্টার' অপরিবর্তিত এবং কিছুই ঘটেনি
মধুর আহুজা

এটি একটি সতর্কতা এবং সম্ভবত সম্ভবত এর অর্থ হ'ল যে মাস্টার ব্রাঞ্চ ফাইলগুলি সরানোর জন্য (এখনও) কোনও সংশোধন করে নি। আপনি সহজেই এটি পরীক্ষা করতে পারেন। যদি কোনও সমস্যা হয় তবে দয়া করে প্রশ্নটি আপডেট করুন। দ্রষ্টব্য: ব্যবহার - --allএ সব (স্থানীয়) শাখা পুনর্লিখন একবার
sehe

1

এমনকি আপনি ফাইল (গুলি) মুছুন এবং তারপরে কমিট করার পরেও আপনার কাছে সেই ফাইলগুলি ইতিহাসে থাকবে। এগুলি মুছতে, BFG রেপো-ক্লিনার ব্যবহার বিবেচনা করুন । এটি গিট-ফিল্টার-শাখার বিকল্প।

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