গিটের সাহায্যে ডিরেক্টরি নয় তবে তাদের ফাইলগুলি কীভাবে ট্র্যাক করবেন?


86

আমি সম্প্রতি গিট ব্যবহার করা শুরু করেছি এবং কেবল একটি জিনিস নিয়ে সমস্যা করছি। আমি কীভাবে ডিরেক্টরিগুলির বিষয়বস্তুগুলি ট্র্যাক না করে ট্র্যাক করতে পারি?

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

আমার .gitignore এ আমার নিম্নলিখিত রয়েছে:

আপলোড /*.*

চেষ্টাও করেছেন (যা পুরো ডিরেক্টরিকে উপেক্ষা করে):

আপলোড /

এই ডিরেক্টরিতে উপ ডিরেক্টরি থাকতে পারে (আপলোড / থাম্বস / আপলোড / ভিডিও /) আমি তাদের ফাইলগুলি নয় তবে এগুলি ট্র্যাক করতে সক্ষম হতে চাই।

গিট দিয়ে কি এটা সম্ভব? আমি উত্তর খুঁজে না পেয়ে সর্বত্র অনুসন্ধান করেছি।


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

আরও কংক্রিট: গিট বিষয়বস্তু ট্র্যাক করে এবং ( গিটের জন্য) একটি খালি ডিরেক্টরি সামগ্রী নয়। আপনি তর্ক করতে পারেন, আপনি রাজি হন বা না করেন তবে অন্য "ওয়ার্কআরাউন্ড" হিসাবে আপনি বিল্ড / ইনস্টল / ডিরেক্টরিতে ডিরেক্টরি তৈরি করার বিষয়ে ভাবতে পারেন needed তবে: আমি .placeholder"-ফায়াল"-সমাধানটিও ব্যবহার করি ;)
কিং ক্রঞ্চ

4
.ধারক ব্যবহারের পরিবর্তে, আমি .gitignore ফাইল ব্যবহার করি। এটি কেবল ডিরেক্টরিটির মধ্যে থাকা ব্যতিক্রমগুলির যত্ন নেয় না, তবে এটি নিজে একটি স্থানধারক হিসাবেও কাজ করে।
আবিজার্ন

উত্তর:


114

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

upload/*

তুমি এটি করতে পারো:

$ touch upload/.placeholder
$ git add -f upload/.placeholder

আপনি যদি ভুলে যান তবে -fআপনি দেখতে পাবেন:

it গিট অ্যাড আপলোড / .প্লেসোল্ডার
নিম্নলিখিত পথগুলি আপনার .gitignore ফাইলগুলির মধ্যে একটি দ্বারা উপেক্ষা করা হয়েছে:
আপলোড
আপনি যদি সত্যিই সেগুলি যুক্ত করতে চান তবে -f ব্যবহার করুন।
মারাত্মক: কোনও ফাইল যুক্ত হয়নি

তারপরে আপনি যখন git statusদেখতে পাবেন:

# শাখা মাস্টারে
#
# প্রাথমিক প্রতিশ্রুতি
#
প্রতিশ্রুতিবদ্ধ হতে পরিবর্তনগুলি:
# (অবরুদ্ধ করতে "গিট আরএম - ক্যাচড ..." ব্যবহার করুন)
#
# নতুন ফাইল: আপলোড / .প্লেসোল্ডার
#

অবশ্যই আপনি তা করতে পারেন:

$ touch upload/images/.placeholder
$ git add -f upload/images/.placeholder

ধন্যবাদ, এটাই আমার দরকার।
বেন

11
স্থানধারকের জন্য একটি সাধারণ সম্মেলন একটি গিটিগনোর ফাইল।
ক্যাসাবেল

4
@ জেফ্রমি সত্যই, আবিজার্নের কাছে আমার মন্তব্য হিসাবে, .gitignoreফাইলটিকে স্থানধারক হিসাবে ব্যবহার করার বিষয়টি কখনই বিবেচনা করে নি ।
পিটার ফার্মার

4
ওফফ, কোনওভাবে এই মন্তব্যগুলি মিস করেছেন।
ক্যাসাবেল

4
গিট ডিরেক্টরিগুলি ট্র্যাক করে না, এটি ফাইলগুলিকে মজাদার শোনায় ট্র্যাক করে যখন তারা আপনাকে শেখায় যে সব কিছু ইউনিক্সের একটি ফাইল, এমনকি ডিরেক্টরি একটি ফাইলও হয়
সবুজ

38

আমি এখানে এই সম্পর্কে লিখেছি ।

ডিরেক্টরিতে একটি .gitignore যুক্ত করুন।


4
সুন্দর ছোট্ট নিবন্ধ এবং মন্তব্য! .Gitignore কে কখনও স্থানধারক ফাইল হিসাবে ব্যবহার করার কথা ভাবেননি ....
পিটার ফার্মার

ধন্যবাদ আমি কেবল একটি পোস্ট লিখে এবং মন্তব্য পেয়ে কিছু শিখেছি।
আবিজার্ন

4
এখন জনপ্রিয় নামকরণের সম্মেলনটি ব্যবহার করার মতো মনে হচ্ছে.gitkeep
তারাবিতে

ঠিক এখনই "হা-হা" মুহুর্তটি পেয়েছি, আমি আশা করি আমি 6 টি বিভিন্ন সময়
উপার্জন করতে পারি

27

আমি যে সেরা উত্তর পেয়েছি তা হ'ল এই লিখিত সামগ্রীর সাথে আপনার আপলোড ফোল্ডারে একটি .gitignore ফাইল অন্তর্ভুক্ত করা

# Ignore everything in this directory
*
# Except this file
!.gitignore

এখানে আপনার কীভাবে আমি গিট সংগ্রহস্থলের একটি খালি ডিরেক্টরি যুক্ত করতে পারি?


এটি সবচেয়ে মার্জিত সমাধান
মুহাম্মদ রায়হান মুহাইমিন

13

এখন পর্যন্ত সেরা সমাধান:

1) একটি .gitignore ফাইল তৈরি করুন

2) ভিতরে লিখুন:

*
*/
!.gitignore

3) আপনি চান ফোল্ডারে .gitignore ফাইল যুক্ত করুন।

সূত্র: https://stackoverflow.com/a/5581995/2958543


6

ফাইলগুলি নয় কেবল ডিরেক্টরিগুলি ট্র্যাক করার জন্য, আমি নিম্নলিখিতটি করেছি। কেবলমাত্র ফাইলগুলি ট্র্যাকিংয়ের বিষয়ে @ পিটারফারমার মন্তব্যের জন্য ধন্যবাদ, আমি নীচে বর্ণিত ফাইলগুলি বাদ দিয়ে সমস্ত ডিরেক্টরি রাখতে সক্ষম হয়েছি।

# exclude everything in every folder
/data/**/*.*

# include only .gitkeep files
!/data/**/*.gitkeep

.Gitignore ফাইলে এটি যুক্ত করা কাজ করবে। নিম্নলিখিতটি আমার ফোল্ডারের কাঠামো।

data/
├── processed
│   ├── dataset1.csv
│   └── dataset2.csv
├── raw
│   ├── raw_dataset1.json
└── test
    ├── subfolder
    │   └── dataset2.csv
    └── reviews.csv

আমি যখন করি git add . && git status, গিটটি কেবল ফোল্ডারগুলিই স্বীকৃতি দেয় তবে ফাইলগুলি নয়।

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   .gitignore
        new file:   data/processed/.gitkeep
        new file:   data/raw/.gitkeep
        new file:   data/test/.gitkeep
        new file:   data/test/subfolder/.gitkeep

আপনার .gitignore ফাইলগুলির জন্য নিম্নলিখিতটি মনে রাখবেন:

স্ল্যাশ প্রস্তুতি কেবল রুট ডিরেক্টরিতে দেখায়।

/ dir

ডাবল নক্ষত্রপুঞ্জ শূন্য বা আরও বেশি ডিরেক্টরি অনুসন্ধান করে।

/ ** /


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