প্রতিশ্রুতিবদ্ধ ফাইলগুলিতে .gitignore প্রয়োগ করা


436

আমি এখন এড়াতে চাই এমন অনেকগুলি ফাইল প্রতিশ্রুতিবদ্ধ করেছি। ভবিষ্যতের কমিটিগুলি থেকে এখন এই ফাইলগুলি উপেক্ষা করার জন্য আমি গিটকে কীভাবে বলতে পারি?

সম্পাদনা: আমি এগুলি সংগ্রহস্থল থেকেও সরাতে চাই। এগুলি সর্বদা তৈরির পরে বা ব্যবহারকারী-নির্দিষ্ট সরঞ্জাম সরঞ্জামের জন্য তৈরি ফাইল।



8
@ উবলি উত্তরটি একই রকম হতে পারে তবে এই প্রশ্নটি হুবহু বর্ণনা করেছে যে আমি যে সমস্যার মুখোমুখি হয়েছিলাম এবং সমাধান করার প্রয়োজন ছিল।
rjmunro

1
এই উত্তর সরাসরি আপনার Git রেপো থেকে ন্যূনতম পরিবর্তনের সঙ্গে উপাধি প্রশ্ন ঠিকানাগুলি হয় stackoverflow.com/a/26245961/3543437
kayleeFrye_onDeck

উত্তর:


471

12
যদিও অনেকগুলি ফাইল রয়েছে। আমি প্রতি
এককটির

1
ফাইলগুলি কি কোনও সাধারণ ডিরেক্টরিতে থাকে? যদি তা না হয় তবে সমস্যাটি শেল ব্যবহারের প্রশ্নে হ্রাস পাবে, গিট নয়।
ম্যাট বল

12
একটি 'আবশ্যক আমি আমার প্রাথমিক প্রতিশ্রুতি না হওয়া পর্যন্ত .gitignore যোগ করতে ভুলে গেছি' মোডের দরকার নেই।
লুক পুপলেট

9
উত্তরটি এইটির নীচে।
ল্যাপসাইড

3
এটি করতে সক্ষম হওয়ার জন্য এটি আমাকে পতাকা যুক্ত করতে বলেছে।
বিশাল গুলতি

599

.gitignoreউপেক্ষা করা ফাইলগুলির সাথে মেলে সম্পাদনা করার পরে , আপনি git ls-files -ci --exclude-standardবাদ পড়া তালিকায় অন্তর্ভুক্ত থাকা ফাইলগুলি দেখতে করতে পারেন ; আপনি তারপর করতে পারেন

//On Linux:
git ls-files -ci --exclude-standard -z | xargs -0 git rm --cached
//On Windows:
for /F "tokens=*" %a in ('git ls-files -ci --exclude-standard') do @git rm --cached "%a"
//On mac
alias apply-gitignore="git ls-files -ci --exclude-standard -z | xargs -0 git rm --cached"

এগুলি সংগ্রহস্থল থেকে সরাতে (ডিস্ক থেকে এগুলি মোছা না করে)।

সম্পাদনা : আপনি এটিকে আপনার .gitconfig ফাইলে একটি উপনাম হিসাবে যুক্ত করতে পারেন যাতে আপনি এটি যে কোনও সময় চালাতে পারেন। কেবলমাত্র [লেনদেন] বিভাগের অধীনে নিম্নলিখিত লাইনটি যুক্ত করুন (উইন্ডোজ বা ম্যাকের জন্য প্রয়োজনীয় হিসাবে সংশোধন করুন):

apply-gitignore = !git ls-files -ci --exclude-standard -z | xargs -0 git rm --cached

( -rমধ্যে পতাকা xargsপ্রতিরোধ git rmএকটি খালি ফলাফলের চলমান এবং আউট মুদ্রণ ব্যবহারের বার্তা, কিন্তু শুধুমাত্র গনুহ findutils দ্বারা সমর্থিত হতে পারে না। অন্য সংস্করণxargs বা অনুরূপ বিকল্প নাও থাকতে পারে পারে।)

এখন আপনি কেবল git apply-gitignoreনিজের রেপো টাইপ করতে পারেন এবং এটি আপনার পক্ষে কাজটি করবে!


10
আমার মনে হয় ম্যাকের জন্য xargs এর কোনও রে-নেই ... বা আমার বগি / পুরানো, আমি জানি না ... এবং কেন !আগে গিট? ভাল ... আমার এক হিসাবে কাজ alias apply-gitignore="git ls-files -ci --exclude-standard -z | xargs -0 git rm --cached"। tks!
ফিলিপ সাবিনো

18
উইন্ডোজেfor /F "tokens=*" %a in ('git ls-files -ci --exclude-standard') do @git rm --cached "%a"
লুক পুপলেট

এটি কেবলমাত্র আমার .gitignore ফাইলগুলি সরিয়েছে, আমি যে ফাইলগুলিকে উপেক্ষা করতে চাইছিলাম তা না .gitignore ফাইলগুলিতে তালিকাভুক্ত করা হয়েছিল - এটি কি বিন্দু?
হিপ্পিজিম

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

1
ম্যাক ব্যবহারকারীদের জন্য, -rডিফল্ট এবং BSD সংস্করণ দ্বারা গৃহীত হয় না। সুতরাং সরান -r
ওয়েশি জেং

136

রেপোতে ফাইলটি ছেড়ে দিতে তবে এতে ভবিষ্যতের পরিবর্তনগুলি উপেক্ষা করুন:

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

এবং এটি পূর্বাবস্থায় ফেরাতে:

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

কোন ফাইলগুলি এইভাবে সেট করা হয়েছে তা সন্ধান করতে:

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

http://blog.pagebakers.nl/2009/01/29/git-ignoring-changes-in-tracked-files/ এর আসল উত্তরের ক্রেডিট


1
: Chronial একটি ডিরেক্টরির জন্য recursively এই করছেন একটি মহান উত্তর আছে stackoverflow.com/a/16346756/1101076
jordan314

আমি একটি আইডিই কনফিগার করতে চেয়েছিলাম কিন্তু এতে অপ্রয়োজনীয় পরিবর্তনগুলি ট্র্যাক করে না। এটি কাজ করে, যদিও আমি নিশ্চিত না যে এটি অন্যদের জন্য কাজ করবে কিনা যারা সংগ্রহস্থলটি পরীক্ষা করে দেখেন। এটি git ls-files -ci --exclude-standard -z | xargs -0 git update-index --assume-unchangedযদি সহায়তা করে তবে এটি একত্রিত হতে পারে ।
dlamblin

7
এটিই একমাত্র উত্তর যা শিরোনামের প্রশ্নটি যা জিজ্ঞাসা করে ঠিক তা করে। পারফেক্ট! এই অন্যান্য উত্তরগুলির বেশিরভাগই অযথা ফাইলের সাথে ঝামেলা করছিল।
kayleeFrye_onDeck

1
এটি প্রশ্নের সঠিক সঠিক উত্তর। কমান্ডগুলি ব্যবহার করে পুনরায় git rm --cachedসংগ্রহস্থলের মধ্যে ফাইলটি মুছে ফেলা হবে, যা কুইজারের চাহিদা পূরণ করে না। ধন্যবাদ. আমি সত্যিই এটার প্রশংসা করছি. আপনার উত্তর আমাকে অনেক সাহায্য করে।
রমউইন

88

নিশ্চিত হয়ে নিন যে আপনার আসল রেপোটি সর্বশেষতম সংস্করণ

  1. সম্পাদনা করুন .gitignoreহিসাবে আপনি ইচ্ছুক
  2. git rm -r --cached .
  3. git add .

তারপর যথারীতি প্রতিশ্রুতিবদ্ধ


14
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত কারণ প্রশ্নটি সুনির্দিষ্টভাবে বলেছে যে সরানোর জন্য প্রচুর ফাইল রয়েছে।
nbeuchat

3
নোট করুন যে পদক্ষেপ 2 আপনার যদি একটি বড় সংগ্রহস্থল থাকে তবে এটি কিছুক্ষণ নিতে পারে।
ব্রেইনব্যাগ

এর ফলে সূচি থেকে সমস্ত ফাইল সরিয়ে নেওয়া হয়েছিল! এটি আমাকে বাঁচিয়েছিল: git reset HEAD(কোনও পরিবর্তনকে লুকিয়ে রাখতে ভুলবেন না)
aksh1618

2
পদক্ষেপ 2 সমস্ত কিছুই মুছে ফেলে, হ্যাঁ, তবে ধাপ 3 them সমস্তই পঠন করা উচিত, .gitignore এর কারণে ব্যর্থ হওয়াগুলি বাদে।
ওজছেস

11

পুরানো প্রশ্ন, তবে আমাদের মধ্যে কিছু git-posh(পাওয়ারশেল) রয়েছে। এটিই এর সমাধান:

git ls-files -ci --exclude-standard | foreach { git rm --cached $_ }

0

এই পদক্ষেপগুলি অনুসরণ করুন:

  1. gitignoreফাইলের পথে যুক্ত করুন

  2. এই আদেশটি চালান

    git rm -r --cached foldername
    
  3. সাধারণত পরিবর্তন প্রতিশ্রুতিবদ্ধ।

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