গিটকে কিছু নির্দিষ্ট ফাইল উপেক্ষা করার পরিবর্তে নির্দিষ্ট কিছু ফাইল অন্তর্ভুক্ত করার উপায় আছে কি?


164

আমার প্রোগ্রামগুলি সাধারণত বিশাল আউটপুট ফাইল (GB 1 গিগাবাইট) উত্পন্ন করে যা আমি গিট সংগ্রহস্থলে ব্যাক আপ করতে চাই না। পরিবর্তে করতে সক্ষম হচ্ছেন

git add .

আমাকে এরকম কিছু করতে হবে

git add *.c *.cc *.f *.F *.C *.h *.cu

যা কিছুটা কষ্টকর ...

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

উত্তর:


230

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

*.c
!frob_*.c
!custom.c

এটিতে কাস্টম.সি. এবং "ফ্রোব_" দিয়ে শুরু করা কিছু বাদ দিয়ে সমস্ত .c ফাইল উপেক্ষা করতে হবে


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

8
ফোল্ডারগুলি কেমন? আমি কোনও নিয়ম অবহেলা করে ভিতরে ফোল্ডার এবং ফাইল অন্তর্ভুক্ত করার উপায় খুঁজে পাচ্ছি না।
মারসিও ক্রুজ

4
ফোল্ডার সম্বন্ধে দয়া করে চেক করুন stackoverflow.com/questions/12799855/...
uzsolt

2
খুব সুন্দর. আমি এটি আমার বাসার ফোল্ডারে vimrc এবং বাশার্কের মতো জিনিসের জন্য একটি সংগ্রহস্থল রাখতে ব্যবহার করছি
মার্টিন ক্যাপোডিসি

1
আপনি যদি একটি নির্দিষ্ট ফোল্ডার অন্তর্ভুক্ত করতে চান তবে @Zsolt কাজ করে না। দেখতে stackoverflow.com/questions/987142/...
ডি-ক্যাপ্রিও

73

আপনার সংগ্রহশালায় .gitignore ফাইল তৈরি করুন এবং আপনি কেবল সি ফাইলগুলি ট্র্যাক করতে চান এবং অন্য সমস্ত ফাইল উপেক্ষা করতে চান তবে এর সাথে নিম্নলিখিত লাইনগুলি যুক্ত করুন ....

*
!*.c

'*' সমস্ত ফাইল উপেক্ষা করবে

এবং ! ফাইলগুলিকে অগ্রাহ্য করা হবে তা প্রত্যাখ্যান করবে .... সুতরাং এখানে আমরা গিটকে সি ফাইলগুলি উপেক্ষা করার জন্য জিজ্ঞাসা করছি ....


আপনার কি .*লুকানো ফাইলের দরকার আছে ?
trusktr

2
*একটি ওয়াইল্ড কার্ড এমনকি জন্য .তাই গোপন ফাইলগুলি উপেক্ষা করা হয়, কিন্তু তারপর সব লুকানো শেষ হওয়া ফাইল, .cঅন্তর্ভুক্ত করা হয়।
রোহমার

2
এই পদ্ধতিটি ব্যবহার করে আমি মনে করি সাবফোল্ডারগুলির ফাইলগুলিও উপেক্ষা করা হবে। আরও তথ্যের জন্য এটি চেক করুন stackoverflow.com/a/11853075/739436
স্টেলিয়ান 4'15

1
আমি আমার হোম ডিরেক্টরিতে এই পদ্ধতিটি কেবলমাত্র আমার .bashrc এবং .bash_history যেমন: .gitignore ফাইলে *অনুসরণ করেছি !.bash*
user5359531

1
আপনার *.*উইন্ডোজগুলিতে প্রয়োজন হতে পারে - @ স্মরণজিৎ মাইতির উত্তর দেখুন
মার্টিন ক্যাপোডিসি

13

এটি অর্জনের সেরা সমাধান

.gitignoreসংগ্রহস্থলে ফাইল তৈরি করুন এবং rootআপনি যদি কেবলমাত্র .cফাইল অন্তর্ভুক্ত করতে চান তবে ফাইলের জন্য আপনাকে নীচে লাইন যুক্ত করতে .gitignoreহবে

*.*
!*.c

এর মধ্যে .cডিরেক্টরি থেকে সমস্ত ফাইল অন্তর্ভুক্ত করা হবে এবং পুনরাবৃত্তভাবে সাব-ডিরেক্টরী।

ব্যবহার

*
!*.c

গিটের সমস্ত সংস্করণে কাজ করবে না।

পরীক্ষিত

গিট সংস্করণ 2.12.2.windows.2


2
হ্যাঁ আমারও একই সমস্যা *ছিল এবং ব্যবহার করতে হয়েছিল *.*। এটি উইন্ডোজে গিটব্যাশ এবং গিট সংস্করণ ২.৯.০. উইন্ডোজ ১ ব্যবহার করছে
মার্টিন কপোডিসি

2

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

# Ignore everything under "directory"
directory/*
# But don't ignore "another_directory"
!directory/another_directory
# But ignore everything under "another_directory"
directory/another_directory/*
# But don't ignore "file_to_be_staged.txt"
!directory/another_directory/file_to_be_staged.txt

0

পার্টিতে দেরীতে, তবে আমার সমাধানটি হ'ল উত্স ফাইলগুলির জন্য একটি ডিরেক্টরি এবং এক্সিকিউটেবল এবং প্রোগ্রাম আউটপুটের জন্য একটি ভিন্ন ডিরেক্টরি থাকতে পারে এরকম কিছু:

+ .git
|    (...)
+ bin
|    my_exe.exe
|    my_output.txt
+ src
     some_file.c
     some_file.h 

... এবং তারপরে কেবল src/আমার স্টোরগুলিতে জিনিসগুলি যুক্ত করুন এবং bin/সম্পূর্ণ উপেক্ষা করুন ।

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