আপনি কিভাবে গিট .gitignore ব্যবহার না করে ফাইল উপেক্ষা করবেন?


132

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

উত্তর:


178

গিটিগনোর অনুসারে ভুলে যাবেন না যে গিট বিবেচনা করে বিভিন্ন "প্যাটার্ন উত্সগুলিকে উপেক্ষা করুন" এর মধ্যে অগ্রাধিকারের একটি আদেশ রয়েছে:

  • তাদের সমর্থন করে এমন কমান্ডগুলির জন্য কমান্ড লাইন থেকে প্যাটার্নগুলি পড়ে।
  • প্যাটার্নগুলি একই ডিরেক্টরিতে .gitignore ফাইল থেকে পাঠানো পথ হিসাবে বা কোনও প্যারেন্ট ডিরেক্টরিতে, উচ্চ স্তরের ফাইলগুলির নিদর্শন (মূল পর্যন্ত) ফাইল সহ ডিরেক্টরিতে নিম্ন স্তরের ফাইলগুলিকে ওভাররাইড করা হয়।
  • প্যাটার্নগুলি থেকে পড়া $GIT_DIR/info/exclude
  • কনফিগারেশন ভেরিয়েবল দ্বারা নির্দিষ্ট ফাইল থেকে প্যাটার্নগুলি পঠিত core.excludesfile

শেষ দুটি আপনার সমস্যার সমাধান হতে পারে তবে:

  • এগুলি দূরবর্তী সংগ্রহস্থলের জন্য প্রতিলিপি করা হয় না
  • তারা অন্যান্য উত্স দ্বারা তাদের নিদর্শন ওভাররাইড থাকতে পারে

(এই আরও প্রশ্ন দেখুন )


অন্য দুটি সমাধান সূচী আপডেট করতে জড়িত ( git update-index):

যাইহোক, আপনি যখন অন্য কোনও শাখা চেকআউট করেন বা যখন আপনি git pull, সেই "উপেক্ষা" স্থিতি পুনরায় সেট করা যেতে পারে। সুতরাং অন্য বিকল্প:

" গিট - ডিফারেন্স বিটুমিন ' assume-unchanged' এবং ' skip-worktree' এ দুটির মধ্যে পার্থক্যটি ব্যাখ্যা করা হয়েছে ।


আপনি ব্যবহার করতে পারেন update-index --assume-unchanged@see stackoverflow.com/a/25253144/292408
ইলিয়াস লিন

1
@ এলিজাহ লিন নিশ্চিত এছাড়াও আপনি আছে update-index --skip-work-tree। আমি উত্তর দুটি সম্পাদনা করে আমার পুরানো উত্তরের কয়েকটি লিঙ্ক যুক্ত করতে উত্তরটি সম্পাদনা করেছি update-index
ভনসি

140

আপনি যদি সংশোধন .git/info/excludeকরতে পারেন তবে একই নিয়মগুলি সেখানে রাখতে পারেন। তবে এই ফাইলটি কেবল আপনার স্থানীয় রেপোর মধ্যে রয়েছে।


মনে হচ্ছে এটি সম্ভবত আপনার সেরা বাজি; আসুন আপনি আপনার স্থানীয় সংগ্রহস্থল থেকে ফাইলগুলি বাদ দিন।
আবিজার্ন

1
সাবমডিউলগুলির সাথে এটি কীভাবে কাজ করে? .git
সাবমডিউলে

10
@ ইয়োরফ্রেন্ডজাক একটি সাবমডিউলের .gitফোল্ডারটি আসলে রয়েছে parent_repo/.git/modules/submodule_name। সুতরাং আপনি সম্পাদনা করতে চানparent_repo/.git/modules/submodule_name/info/exclude
কারা ব্রাইটওয়েল

25

জিআইটি কে বলার জন্য তিনটি উপায় রয়েছে যা কোন ফাইলগুলিকে উপেক্ষা করবেন:

  • .gitignore নথি পত্র
  • $GIT_DIR/.git/info/exclude
  • ফাইলগুলি core.excludesfileসেটিংয়ের মাধ্যমে নির্দেশিত

দ্বিতীয় দুটি পয়েন্ট আপনার সমস্যার সমাধান করতে পারে।

আরও তথ্যের জন্য, গিটিগনোর (5) দেখুন


5

আপনি যদি কেবলমাত্র কিছু স্থানীয় ফাইল সংগ্রহস্থলের মধ্যে রাখতে চান এবং সাব-ডিরেক্টরি ডিরেক্টরিটি নমনীয় হয়, আপনি নিজের ফাইলগুলিতে tracked_dir1/tracked_dir2/untracked_dir/and tracked_dir1/tracked_dir2/untracked_dir/.gitignoreুকিয়ে রাখতে পারেন এবং এর মতো সামগ্রীর সাথে একটি যুক্ত করতে পারেন:

*

অর্থাত

$ cat > tracked_dir1/tracked_dir2/untracked_dir/.gitignore
*
<Ctrl+D>

4

আমি একই পরিস্থিতিতে ছিলাম, তাই আমি আমার পছন্দসই সমাধানটি যুক্ত করছি যা আমি উল্লেখ করি না। git update-index --assume-unchangedএই ক্ষেত্রে সমস্যাটি হ'ল আপনি একটি চিহ্নবিহীন ফাইলের জন্য এটি করতে পারবেন না। তুমি বলেছিলে

আমি আমার সংগ্রহস্থলের .gitignore পরিবর্তন করতে পারি না।

আমি ধরে নিচ্ছি আপনি যা বোঝাতে চেয়েছেন তা হ'ল আপনি কোনও পরিবর্তনকে উত্সে ঠেকাতে পারবেন না .gitignore। যদি এমনটি হয় তবে আপনি যা করতে পারেন তা হ'ল আপনার লোকালগুলিতে তালিকাভুক্ত ফাইলটি যুক্ত করা .gitignore, তবে git update-index --assume-unchanged .gitignoreএমনটি করুন যাতে আপনার পরিবর্তনটি .gitignoreকখনই ধাক্কা না দেয়। এখন আপনি (সম্ভবত) অপ্রকাশিত ফাইলটিকে উপেক্ষা করছেন এবং দূরবর্তী .gitignoreফাইলটিকে প্রভাবিত করছেন না ।


3

ট্র্যাক করা ফাইলগুলিতে স্থানীয় পরিবর্তনগুলি উপেক্ষা করুন: git update-index --assume-unchanged my-file.php

ট্র্যাক করা ফাইলগুলিতে স্থানীয় পরিবর্তনগুলি অচিহ্নিত করুন: git update-index --no-assume-unchanged my-file.php

উৎস: git help update-index

--[no-]assume-unchanged
           ...
           This option can be also used as a coarse file-level mechanism to ignore uncommitted changes in tracked
           files (akin to what .gitignore does for untracked files). Git will fail (gracefully) in case it needs to
           modify this file in the index e.g. when merging in a commit; thus, in case the assumed-untracked file is
           changed upstream, you will need to handle the situation manually.


1

অন্য উপায়:

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