গিটে নির্দিষ্ট ফাইলগুলিকে কীভাবে উপেক্ষা করবেন


730

আমার কাছে একটি ফাইল সহ একটি সংগ্রহস্থল রয়েছে Hello.java,। আমি যখন এটি সংকলন করি তখন একটি অতিরিক্ত Hello.classফাইল উত্পন্ন হয়।

আমি Hello.classএকটি .gitignoreফাইলের জন্য একটি এন্ট্রি তৈরি করেছি । তবে, ফাইলটি এখনও ট্র্যাক করা আছে বলে মনে হচ্ছে।

আমি কীভাবে গিটকে উপেক্ষা করতে পারি Hello.class?


8
"এটি কাজ করে না" মানে কি? আপনি সম্ভবত ইতিমধ্যে আপনার সংরক্ষণাগারে হ্যালো.ক্লাস যুক্ত করেছেন? ইতিমধ্যে ট্র্যাক করা সামগ্রীতে gitignores এর কোনও প্রভাব নেই। উদাহরণস্বরূপ দেখুন স্ট্যাকওভারফ্লো.com
প্রশ্নগুলি /

উত্তর:


808

সমস্যাটি হ'ল যে .gitignoreফাইলগুলি আগে (দ্বারা git add) ট্র্যাক করা হয়নি কেবল তা উপেক্ষা করে । git reset name_of_fileফাইলটি আনস্টেজ করতে এবং এটি চালিয়ে যেতে চালান । যদি আপনি প্রদত্ত ফাইলটি সংগ্রহস্থল থেকে সরিয়ে নিতে চান (ধাক্কা দেওয়ার পরে), ব্যবহার করুন git rm --cached name_of_file


190
কমান্ডটি git rm --cached name_of_fileআপনার গিট রেপো থেকে ফাইলটি সরিয়ে ফেলবে। এমনকি আপনি এটি আপনার .gitignore ফাইলটিতে যুক্ত করলেও। এটি মুছে ফেলা হচ্ছে তা উপেক্ষা করছে না।
অরওয়েলহিনডেনবার্গ

4
যা দেখে মনে হয় ওপি এই ক্ষেত্রে কী চেয়েছিল।
ওন্দ্রেজ স্লিনটেক

40
আপনার সমাধান @ কোহান 95 এর জন্য কাজ করে আমি আনন্দিত! যদিও এই প্রশ্নের নাম পরিবর্তন করা উচিত নির্বাচিত উত্তরের ভিত্তিতে। আমার মন্তব্যগুলি ডেভসকে কেবল একটি সতর্কতা যা কমান্ড কী করবে তা অবগত হতে পারে না।
অরওয়েলহিনডেনবার্গ

91
git reset name_of_fileট্র্যাকিং অপসারণ এবং ফাইল মুছে না।
সিস টিমারম্যান

7
চেষ্টা করা গিট আরএম - কেচড <নাম_ইফ_ফাইলে> এটি রেপোতে ফাইলটি মুছে ফেলল, তবে এটি .gitignore ফাইলে থাকায় স্থানীয় অনুলিপি মোছা হয়নি। আরও একটি নোট হিসাবে, ডিরেক্টরি যুক্ত করার জন্য, আপনাকে এটি একটি পিছনের ফরোয়ার্ড স্ল্যাশ '/' দিয়ে রাখা উচিত। আমি রুবিমিনের কনফিগার ডিরেক্টরিটি কোনও রুবি প্রজেক্টে সরিয়েছিলাম যা কেউ চেক ইন করেছিল, যা ছিল ".idea"। ফাইলটিতে আমি ".idea /" এবং তারপরে "git rm --cached -r .idea" রেখেছি এবং এর অধীনে সমস্ত কিছুই মুছে ফেলতে পারি (কারণ git কেবল সংস্করণ ফাইল দেয়, ডিরেক্টরি নয়।)
ডগ নোয়েল

222

কীভাবে নতুন ফাইল উপেক্ষা করবেন

বিশ্বব্যাপী

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

স্থানীয়ভাবে

পথ (গুলি) আপনার ফাইল (গুলি) যা আপনি আপনার জন্য উপেক্ষা করতে চান তবে যোগ করুন .git/info/excludeফাইল। এই ফাইল এন্ট্রিগুলি কেবল আপনার স্থানীয় ওয়ার্কিং কপির জন্য প্রযোজ্য।

পরিবর্তিত ফাইলগুলিকে কীভাবে উপেক্ষা করবেন (অস্থায়ীভাবে)

পরিবর্তিত ফাইলগুলিকে পরিবর্তিত হিসাবে তালিকাবদ্ধ করা উপেক্ষা করার জন্য, আপনি নিম্নলিখিত git কমান্ডটি ব্যবহার করতে পারেন:

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

সেই অজ্ঞতা ফিরিয়ে আনতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

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

কোনও বর্তমান এপিআই কী ধরে থাকা কোনও ফাইলকে গিথুবে ঠেকানো থেকে বাঁচানোর জন্য উপযুক্ত!
টেক্সাসে জিম

1
@ এক্সম্যান আপনি কেন বলেছেন যে এটি অস্থায়ীভাবে? localগিট উপেক্ষা করার জন্য আপনি উল্লিখিত পদক্ষেপগুলি আমি করেছি এবং আমার সিস্টেমটি পুনরায় চালু করেছি, এটি এখনও সরাসরি পরিষ্কার কাজ করে দেখায়।
বিবেক বর্ধন

1
দরকারী update-indexকৌশলটির জন্য ধন্যবাদ , কোনও .gitignoreফাইল পরিবর্তন এড়াতে একেবারে নিখুঁত , যা গিট দ্বারা ট্র্যাক করা হয়!
থমাস পি।

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

@ বিবেক বর্ধন গিট আপডেট-ইনডেক্স - এ্যাসিউম-অপরিবর্তিত হ'ল সূচকটিতে একটি অস্থায়ী মুখোশের মতো। আপনি এটি বন্ধ না করা পর্যন্ত এটি কার্যকর থাকবে। সম্ভবত আমার বক্তব্য আরও স্পষ্ট করে তুলতে, সূচকটি প্রাথমিকভাবে (যা গিট রিড-ট্রি-এর ঠিক পরে) "স্রোতে পড়ে থাকা গাছ-ইশ থেকে সমস্ত ফাইল রয়েছে" তাই গিটকে "অন্ধ চোখের দিকে পরিণত করে" একটি সূচক এন্ট্রি আসলে এটি অপসারণের সমান হয় না।
এক্সমান ক্লাসিকাল

150

.Gitignore এ নিম্নলিখিত লাইনটি যুক্ত করুন:

/Hello.class

এটি হিট.ক্লাসকে গিট থেকে বাদ দেবে। আপনি যদি ইতিমধ্যে এটি প্রতিশ্রুতিবদ্ধ থাকেন তবে নিম্নলিখিত কমান্ডটি চালান:

git rm Hello.class

আপনি যদি গিট থেকে সমস্ত শ্রেণীর ফাইলগুলি বাদ দিতে চান তবে নিম্নলিখিত লাইনের .gitignore এ যুক্ত করুন:

*.class

32
যোগ Hello.classকরা কোনও সাব-ডিরেক্টরিতে .gitignoreডাকা যেকোন ফাইলকে উপেক্ষা করবে Hello.class। যদি আপনি কেবল ফাইলটিকে Hello.classএকই ডিরেক্টরিতে থাকা ফাইলটিকে উপেক্ষা করতে চান তবে পরিবর্তে .gitignoreএকটি /Hello.classলাইন ব্যবহার করুন।
ndim

আপনি .gitignoreফাইলটি কোথায় রাখবেন ?
কোডি বাগস্টিন

6
@ ইম্রে আপনি .gitignoreগিট প্রকল্পে যে কোনও জায়গায় রাখতে পারেন - যদি কোনও পথ দিয়ে শুরু /হয় তবে এটি .gitignoreফাইলের অবস্থানের সাথে তুলনামূলক হবে; অন্যথায় এটি বর্তমান ডিরেক্টরি এবং এর বংশধর ডিরেক্টরিগুলির ফাইলগুলিকে পুনরাবৃত্তভাবে উল্লেখ করবে।
আরমান্ড

109

1) একটি .gitignoreফাইল তৈরি করুন। এটি করতে, আপনি কেবল একটি .txtফাইল তৈরি করুন এবং এক্সটেনশানটি নীচে পরিবর্তন করুন:

এখানে চিত্র বিবরণ লিখুন

তারপরে আপনাকে নামটি পরিবর্তন করতে হবে, একটি লিমিটেড উইন্ডোতে নিম্নলিখিত লাইনটি লিখতে হবে:

 rename git.txt .gitignore

কোথায় git.txtআপনি সবে তৈরি করা ফাইলটির নাম ।

তারপরে আপনি ফাইলটি খুলতে পারেন এবং আপনার যে সমস্ত ফাইল সংগ্রহস্থলটিতে যোগ করতে চান না তা লিখতে পারেন। উদাহরণস্বরূপ, আমার এইরকম দেখাচ্ছে:

#OS junk files
[Tt]humbs.db
*.DS_Store

#Visual Studio files
*.[Oo]bj
*.user
*.aps
*.pch
*.vspscc
*.vssscc
*_i.c
*_p.c
*.ncb
*.suo
*.tlb
*.tlh
*.bak
*.[Cc]ache
*.ilk
*.log
*.lib
*.sbr
*.sdf
*.pyc
*.xml
ipch/
obj/
[Bb]in
[Dd]ebug*/
[Rr]elease*/
Ankh.NoLoad

#Tooling
_ReSharper*/
*.resharper
[Tt]est[Rr]esult*

#Project files
[Bb]uild/

#Subversion files
.svn

# Office Temp Files
~$*

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

তারপরে গিট বাশে আপনাকে নিম্নলিখিত লাইনটি লিখতে হবে:

git config --global core.excludesfile ~/.gitignore_global

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

  1. git rm -r --cached .
  2. git add .
  3. git commit -m ".gitignore is now working"

যদি দ্বিতীয় পদক্ষেপটি কাজ না করে তবে আপনি যে ফাইলগুলি যুক্ত করতে চান তার পুরো রুটটি লিখতে হবে।


আপনি প্রম্পটে "কপিরাইট কন .gitignore" কমান্ডটি ব্যবহার করতে পারেন এবং তারপরে উইন্ডোজ এক্সপ্লোরার ছাড়াই সরাসরি ফাইলটি তৈরি করতে CTRL + Z টিপুন।
হারিংগার

61

উপেক্ষা করার জন্য:

git update-index --assume-unchanged <path/to/file>

অগ্রাহ্য করাটিকে পূর্বাবস্থায় ফেরাতে:

git update-index --no-assume-unchanged <path/to/file>

6
আমি সমস্যার সমাধান হিসাবে এই চার্টের শীর্ষে থাকতে চাই .... এটি খুব সাধারণ এবং মার্জিত
ব্যবহারকারী 11457958

"এটি খুব সহজ এবং মার্জিত" - সত্য নয় : 'অনুমান-অপরিবর্তিতকে উপেক্ষা করার প্রক্রিয়াটির জন্য অপব্যবহার করা উচিত নয়। এটি হবে "আমি জানি আমার ফাইলসিস্টেম অপারেশন ধীর হয়। হয় আমি গীত প্রতিজ্ঞা করব যে আমি করব না এই পাথ পরিবর্তন ..." বিশেষ করে, এটা না একটি প্রতিশ্রুতি ... যেটা গীত সবসময় বিবেচনা করব এই পাথ অপরিবর্তিত-যদি হয় গীত একটি পাথ নির্ধারণ করতে পারেন ... অতিরিক্ত lstat(2)ব্যয় ব্যতীত পরিবর্তিত হয়েছে , পথটি সংশোধন করা হয়েছে ( এই পরিবর্তন করতে নিরপেক্ষ) এই তথ্যের অধিকার সংরক্ষণ করে git commit -a''
ক্রিস

47

ট্র্যাক করা ফাইলগুলিতে পরিবর্তনগুলি উপেক্ষা / উপেক্ষা করার জন্য আপনি নীচের পদ্ধতিগুলি ব্যবহার করতে পারেন।

  1. উপেক্ষা করার জন্য: git update-index --assume-unchanged <file>
  2. উপেক্ষা করা ফাইলগুলিকে ফিরিয়ে আনার জন্য: git update-index --no-assume-unchanged <file>

4
এটি কি সমস্ত ফাইলে প্রযোজ্য ? এটি স্পষ্ট নয় যে কীভাবে এই কমান্ডগুলি কেবল একটি একক ফাইলে এড়ানো / অনাগ্রহিত করতে প্রয়োগ করা যেতে পারে।
জাভাদবা

@ কেপিল অবশেষে !! এমন কিছু যা আসলে ট্রিলিয়ন গিট আদেশের বিভিন্নতার মধ্যে কাজ করে! কিছু বোকা বিল্ড.এক্সএমএল ফাইলগুলি উপেক্ষা করার জন্য প্রতিটি উত্তর চেষ্টা করে যা প্রতিটি বিল্ডের পরে উপস্থিত থাকে ... ধন্যবাদ!
মূর্তিমান নিরানন্দ

1
দয়া করে করবেন না : 'উপেক্ষা করার পদ্ধতিটির জন্য অনুমান-অপরিবর্তিতকে অপব্যবহার করা উচিত নয়। এটি হবে "আমি জানি আমার ফাইলসিস্টেম অপারেশন ধীর হয়। হয় আমি গীত প্রতিজ্ঞা করব যে আমি করব না এই পাথ পরিবর্তন ..." বিশেষ করে, এটা না একটি প্রতিশ্রুতি ... যেটা গীত সবসময় বিবেচনা করব এই পাথ অপরিবর্তিত-যদি হয় গীত একটি পাথ নির্ধারণ করতে পারেন ... অতিরিক্ত lstat(2)ব্যয় ব্যতীত পরিবর্তিত হয়েছে , পথটি সংশোধন করা হয়েছে ( এই পরিবর্তন করতে নিরপেক্ষ) এই তথ্যের অধিকার সংরক্ষণ করে git commit -a''
ক্রিস

22

.gitignore.Git যেখানে ডিরেক্টরিতে একটি তৈরি করুন । আপনি এতে একটি নতুন লাইনের দ্বারা পৃথক করে ফাইল তালিকাভুক্ত করতে পারেন। আপনি ওয়াইল্ডকার্ডও ব্যবহার করতে পারেন:

*.o
.*.swp

3
এটা টুল-নির্দিষ্ট নিদর্শন (অর্থাত আপনার অস্থায়ী তেজ ফাইল) নির্বাণ এড়াতে একটি ভাল অনুশীলন .gitignoreফাইল (যদি না যে টুল প্রকল্পের দ্বারা বাধ্যতামূলক করা হয়)। আপনি আপনার ব্যবহারকারী হিসাবে আপনার পছন্দসই সরঞ্জামগুলির জন্য নিদর্শনগুলি ফাইল (সেট core.excludesFile) বাদ দিতে পারেন ; তারা আপনার সমস্ত ভান্ডার জুড়ে কাজ করবে। উদাহরণস্বরূপ git config --global core.excludesFile "$HOME/.git-user-excludes", তারপরে সেগুলি ফাইলে রাখুন।
ক্রিস জনসেন

@ ক্রিস: টিপটির জন্য ধন্যবাদ। তবে আমি এটি কেবল সেখানে লিখেছি কারণ আমার মনে এর চেয়ে ভাল আর কিছুই আসে নি :)
টার্মিনাস

1
@ ক্রিস জনসন 'সরঞ্জাম নির্দিষ্ট?' ভিমের জন্য ?? আমি মনে করি
ভিম অদলবদ

16

অফিসিয়াল গিটহাব সাইট থেকে:

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

git rm --cached FILENAME

অথবা

git rm --cached .

12

আপনার মতো কিছু লেখা উচিত

*.class

আপনার .gitignoreফাইলের মধ্যে


4
@ এজেন্টজেব্রা সমস্ত ফাইল শেষ করে গিটকে উপেক্ষা করার জন্য *.classআপনার নিজের একটি এন্ট্রি যুক্ত করা উচিত । .gitignore.class
কিংক্রাঞ্চ

7

আপনি কোন ফাইলগুলিতে ফাইল উপেক্ষা করতে চান তা যুক্ত করুন .gitignore :

* .class

* .projects

* .prefs

* .project



5

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

git rm --cached FILENAME

আপনি যদি নতুনভাবে প্রকল্পটি শুরু করছেন এবং আপনি গিট উপেক্ষা করে কিছু ফাইল যুক্ত করতে চান, একটি গিট উপেক্ষা ফাইল তৈরি করতে নীচের পদক্ষেপগুলি অনুসরণ করুন:

  1. আপনার গিট সংগ্রহস্থলটিতে নেভিগেট করুন।
  2. "টাচ .গ্রিটাইনোর" প্রবেশ করান যা একটি .gitignoreফাইল তৈরি করবে ।

3

পুরো ফাইল টাইপগুলি বাদ দিতে আপনি .gitattributes (.gitignore এর পরিবর্তে) ব্যবহার করতে পারেন। ফাইলটি বেশ স্ব-বর্ণনামূলক, তবে আমি এখানে রেফারেন্সের জন্য বিষয়বস্তুগুলি আটক করছি। শেষ লাইনে মনোযোগ দিন (* .ক্লাস বাইনারি):

# Denote all files that are truly binary and should not be modified.
*.png binary
*.jpg binary
*.gif binary
*.ico binary
*.mo binary
*.pdf binary
*.phar binary
*.class binary

2

.Git / তথ্য / বাদ দিতে নিম্নলিখিত লাইনটি যুক্ত করুন:
হ্যালো.ক্লাস


আপনি ফোল্ডারের ভিতরে ফাইল পরিবর্তন অনুমিত হয় .git?
পিটার মর্টেনসেন

হতে পারে, .git ম্যানুয়ালি এই ফাইলগুলি স্পর্শ করা ভাল ধারণা নয়।
মিগ্যকি

2

"ডাম্প.আরডিবি" ফাইলটি নিয়ে আমার একই সমস্যা ছিল।
আমি এই ফাইলটি .gitignore ফাইলটিতে বিভিন্ন উপায়ে যুক্ত করার চেষ্টা করেছি, তবে কেবল একটি উপায় কাজ করেছে।

.Gitignore ফাইলের শেষে আপনার ফাইলের নাম যুক্ত করুন

দ্রষ্টব্য: অন্য কোথাও ফাইল যোগ করার কাজ হয়নি।

উদাহরণস্বরূপ, দেখুন: https://gitlab.com/gitlab-org/gitlab-ce/raw/b3ad3f202478dd88a3cfe4461703bc3df1019f90/.gitignore


2

এই ওয়েবপৃষ্ঠাটি কাজ করার সময় দরকারী এবং সময় সাশ্রয়ী হতে পারে .gitignore

এটি স্বয়ংক্রিয়ভাবে বিভিন্ন আইডিই এবং অপারেটিং সিস্টেমের জন্য নির্দিষ্ট ফাইল / ফোল্ডারগুলি সহ সাধারণত আপনার গিট সংগ্রহস্থলে টানতে চান না এমন ফাইলগুলি তৈরি করে (উদাহরণস্বরূপ, IDE- নির্দিষ্ট ফোল্ডার এবং কনফিগারেশন ফাইলগুলি)।


1

আমি এটি চেষ্টা করেছিলাম -

  1. ফাইলগুলিকে তালিকাবদ্ধ করুন যা আমরা উপেক্ষা করতে চাই

git status .idea/xyz.xml .idea/pqr.iml Output .DS_Store

  1. # 1 ধাপের সামগ্রীটি অনুলিপি করুন এবং এটি .gitignore ফাইলটিতে যুক্ত করুন।

echo " .idea/xyz.xml .idea/pqr.iml Output .DS_Store" >> .gitignore

  1. যাচাই

git status .gitignore

একইভাবে আমরা ডিরেক্টরি এবং এর সাব ডির / ফাইলগুলি যুক্ত করতে পারি যা আমরা গিট স্ট্যাটাস ব্যবহার করে উপেক্ষা করতে চাই directoryname/*এবং আমি এই কমান্ডটি srcডিরেক্টরি থেকে কার্যকর করেছিলাম ।


1
  1. .Gitignore ফাইল এ যান এবং আপনি যে ফাইলগুলি উপেক্ষা করতে চান সেগুলির জন্য এন্ট্রি যুক্ত করুন
  2. চালান git rm -r --cached .
  3. এখন চালান git add .

0

আমি চেষ্টা করেছি --assume-unchangedএবং এটিও .gitignoreভালভাবে কাজ করে নি। এগুলি শাখাগুলি স্যুইচ করা কঠিন এবং অন্যের পরিবর্তনগুলিকে মার্জ করা শক্ত করে তোলে। এটি আমার সমাধান:

আমি যখন প্রতিশ্রুতিবদ্ধ হয় তখন আমি নিজেই পরিবর্তনের তালিকা থেকে ফাইলগুলি সরিয়ে ফেলি

আমি টানার আগে , আমি পরিবর্তিত ফাইলগুলি স্ট্যাশ করি । এবং টানার পরে, আমি একটি স্ট্যাশ পপ করি

  1. গিট স্ট্যাশ
  2. গিট টান
  3. গিট স্ট্যাশ পপ

৩ য় ধাপ কখনও কখনও একীভূত হওয়ার কারণ হয়ে দাঁড়ায় এবং সংঘাতের সমাধান হতে পারে যা আপনার সমাধান করা দরকার, এটি একটি ভাল জিনিস।

এটি আমাকে স্থানীয় পরিবর্তনগুলি রাখতে দেয় যা দলের অন্যদের সাথে ভাগ করে নেওয়া হয় না।

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