আমি নিম্নলিখিত লাইনটি যুক্ত করেছি .gitignore
:
sites/default/settings.php
তবে আমি টাইপ করার সময় git status
এটি ফাইলটি অচিহ্নিত ফাইল হিসাবে দেখায়।
সমস্যা কি? অন্যান্য সমস্ত নিদর্শনগুলি ভালভাবে কাজ করে।
আমি নিম্নলিখিত লাইনটি যুক্ত করেছি .gitignore
:
sites/default/settings.php
তবে আমি টাইপ করার সময় git status
এটি ফাইলটি অচিহ্নিত ফাইল হিসাবে দেখায়।
সমস্যা কি? অন্যান্য সমস্ত নিদর্শনগুলি ভালভাবে কাজ করে।
উত্তর:
নিশ্চিত করুন যে আপনার করুন .gitignore
কাজ ডিরেক্টরি root- র মধ্যে, এবং যে ডিরেক্টরি রান git status
এবং কপি অবস্থা আউটপুট থেকে ফাইল পাথ এবং এটি পেস্ট .gitignore
।
যদি এটি কাজ না করে, তবে সম্ভবত আপনার ফাইলটি ইতিমধ্যে গিট দ্বারা ট্র্যাক হয়েছে। আপনি আউটপুট মাধ্যমে এটি নিশ্চিত করতে পারেন git status
। যদি ফাইলটি "অবরুদ্ধ ফাইলগুলি" বিভাগে তালিকাভুক্ত না করা হয় , তবে এটি ইতিমধ্যে গিট দ্বারা ট্র্যাক করা হয়েছে এবং এটি .gitignore
ফাইল থেকে নিয়মটিকে উপেক্ষা করবে ।
গিট-এ ফাইলগুলি উপেক্ষা করার কারণটি হ'ল যাতে সেগুলি ভান্ডারে যুক্ত করা যায় না। আপনি যদি পূর্বে কোনও ফাইল যুক্ত করেন তবে আপনি এড়ানো যেতে চান, তবে এটি গিট দ্বারা ট্র্যাক করা হবে এবং এটির সাথে মিলিত উপেক্ষা করার নিয়মগুলি এড়িয়ে যাবে। ফাইলটি ইতিমধ্যে সংগ্রহস্থলের অংশ হওয়ায় গিট এটি করে।
আসলে ফাইলটি উপেক্ষা করার জন্য, আপনাকে এটিটি আনআর্যাক করতে হবে এবং এটি সংগ্রহস্থল থেকে সরিয়ে ফেলতে হবে। আপনি এটি ব্যবহার করে করতে পারেন git rm --cached sites/default/settings.php
। এটি শারীরিকভাবে ফাইলটি মোছা না করেই সংগ্রহস্থল থেকে ফাইলটি সরিয়ে দেয় (এটিই --cached
হয়)। এই পরিবর্তনটি প্রতিশ্রুতি দেওয়ার পরে ফাইলটি সংগ্রহস্থল থেকে সরিয়ে ফেলা হবে এবং এড়ানো এটিকে সঠিকভাবে কাজ করা উচিত।
.git
ডিরেক্টরিটি অবস্থিত এবং যা নিজেই সংগ্রহস্থলের মূল। আপনি যখন কোনও সংগ্রহস্থলটিকে ক্লোন করেন /xy/
তখন /xy/
তার মতো অভ্যন্তরীণ আপনার কার্যকরী ডিরেক্টরি /xy/.git/
।
git add .
পরে git rm --cached
সঠিকভাবে সূচক পুনর্নির্মাণের।
আমি এটি চালাচ্ছি, এটি একটি পুরানো প্রশ্ন, তবে আমি চাই যে ফাইলটি ট্র্যাক করা হোক তবে এটি নির্দিষ্ট কাজকর্মের অনুলিপিগুলিতে ট্র্যাক না করে আপনি চালাতে পারেন এমনটি করতে
git update-index --assume-unchanged sites/default/settings.php
.gitignore কেবলমাত্র সেই ফাইলগুলিকেই উপেক্ষা করবে যা আপনি ইতিমধ্যে আপনার ভাণ্ডারে যোগ করেন নি।
আপনি যদি এটি করেন git add .
এবং ফাইলটি সূচীতে যুক্ত হয়ে যায়, .gitignore আপনাকে সাহায্য করবে না। আপনি এটি করতে হবে git rm sites/default/settings.php
এটা মুছে ফেলার জন্য, এবং তারপর এটি উপেক্ষা করা হবে।
git rm
এটি করা উচিত, তবে এটি আপনাকে -f বিকল্পটি ব্যবহার করতে বলছে যা এটি ওয়ার্কিং ডিরেক্টরি থেকে মুছে ফেলবে। আমি ফাইলটির একটি অনুলিপি তৈরি করা, না করে git rm -f
এবং অনুলিপিটি পুনরুদ্ধার করা ছাড়া অন্যটি বের করতে পারি নি ।
দয়া করে এই আদেশটি ব্যবহার করুন
git rm -rf --cached .
git add .
কখনও কখনও .gitignore ফাইলগুলি সঠিক হওয়া সত্ত্বেও কাজ করে না। গিট ফাইলগুলি উপেক্ষা করার কারণ হ'ল এগুলি সংগ্রহস্থলে যুক্ত করা হয়নি। আপনি যদি এমন কোনও ফাইল যুক্ত করেন যা আপনি আগে উপেক্ষা করতে চান তবে এটি গিট দ্বারা ট্র্যাক করা হবে এবং কোনও স্কিপিং মেলানো নিয়ম এড়িয়ে যাবে। গিট এটি করে কারণ ফাইলটি ইতিমধ্যে ভাণ্ডারের অংশ।
আমারও একই সমস্যা ছিল। ফাইলগুলি .gitingore
চালিত হওয়ার সময় অ্যাক্র্যাকড ফাইল হিসাবে তালিকাভুক্ত যেখানে নির্ধারিত git status
।
কারণটি ছিল .gitignore
ফাইলটি UTF-16LE
এনকোডিংয়ে সংরক্ষণ করা হয়েছিল, এনকোডিংয়ে নয় UTF8
।
.gitignore
ফাইলটির এনকোডিংটি পরিবর্তন করার পরে UTF8
এটি আমার পক্ষে কাজ করেছিল।
আমি কি উপেক্ষা করা তা settings.php ফাইল সফলভাবে:
আমি মনে করি যদি গিটের প্রতিশ্রুতিবদ্ধ ফাইল থাকে তবে প্রত্যাশিতভাবে কাজ করে না উপেক্ষা করুন। কেবল ফাইলটি মুছুন এবং প্রতিশ্রুতিবদ্ধ। পরে তা উপেক্ষা করা হবে।
উদাহরণ রয়েছে যেমন অ্যাপ্লিকেশন কনফিগারেশন ফাইলগুলি, যা আমি গিটে ট্র্যাক করতে চাই (সুতরাং .gitignore কাজ করবে না) তবে স্থানীয় সেটিংসের জন্য আমার পরিবর্তন করা দরকার। আমি এই ফাইলগুলি পরিচালনা করতে বা এটিকে পরিবর্তিত হিসাবে দেখানোর জন্য গিট চাই না। এটি করার জন্য আমি স্কিপ-ওয়ার্কট্রি ব্যবহার করি:
git update-index --skip-worktree path/to/file
আপনি নিশ্চিত করতে পারেন যে ফাইলগুলি তালিকাবদ্ধ করে এসকে দিয়ে স্কিপডের জন্য শুরু হওয়া লাইনগুলি পরীক্ষা করে ফাইলগুলি এড়িয়ে গেছে
git ls-files -v | grep ^S
যদি ভবিষ্যতে আপনি গিটটি স্থানীয়ভাবে ফাইলটি পরিচালনা করতে চান তবে কেবল চালনা করুন:
git update-index --no-skip-worktree path/to/file
উপরের মেসকালিটোর একটি দুর্দান্ত উত্তর ছিল, যা আমাকে সঠিক ট্র্যাকের দিকে নামিয়েছিল তবে
গিট আপডেট-ইনডেক্স - এসেসিউম-অপরিবর্তিত ফাইল / টু / উপেক্ষা করুন ph
গিটের সাথে একটি চুক্তি রয়েছে যার মধ্যে: ব্যবহারকারী ফাইলটি পরিবর্তন না করার প্রতিশ্রুতি দেয় এবং গিটকে ধরে নিতে দেয় যে কার্যকারী ট্রি ফাইল সূচীতে রেকর্ড করা আছে তার সাথে মেলে।
যাইহোক, আমি ফাইলগুলির বিষয়বস্তু পরিবর্তন করি, তাই আমার ক্ষেত্রে --স্কিপ-ওয়ার্ক্রিট আরও ভাল বিকল্প।
তোশিহারু নিশিনার ওয়েবসাইটটি স্কিপ-ওয়ার্ক্রিট্রি বনাম অনুমান-অপরিবর্তিতের একটি দুর্দান্ত ব্যাখ্যা প্রদান করেছে: স্থানীয়ভাবে গিটের সাথে পরিচালিত ফাইলগুলি উপেক্ষা করুন
আর একটি সম্ভাব্য কারণ - গিট ক্লায়েন্টদের একই সময়ে চলমান কয়েকটি দৃষ্টান্ত । উদাহরণস্বরূপ "গিট শেল" + "গিটহাব ডেস্কটপ" ইত্যাদি
আমার সাথে এটি ঘটেছিল, আমি "গিটহাব ডেস্কটপ" কে মূল ক্লায়েন্ট হিসাবে ব্যবহার করছিলাম এবং এটি কিছু নতুন .gitignore সেটিংস উপেক্ষা করছে: প্রতিশ্রুতি দেওয়ার পরে প্রতিশ্রুতিবদ্ধ:
কারণ : ভিজ্যুয়াল স্টুডিও কোড সম্পাদক একই খোলার সংগ্রহশালা সহ পটভূমিতে চলছিল। ভিএস কোডে অন্তর্নির্মিত গিট নিয়ন্ত্রণ রয়েছে এবং এটি কিছু বিবাদ সৃষ্টি করে।
সমাধান : একাধিক, লুকানো গিট ক্লায়েন্টদের ডাবল-চেক করুন এবং একবারে কেবলমাত্র একটি গিট ক্লায়েন্ট ব্যবহার করুন, বিশেষত গিট ক্যাশে সাফ করার সময়।
.Gitignore এর কোনও এক্সটেনশন না রয়েছে তা নিশ্চিত করুন !! এটি .gitignore.txt হতে পারে না, উইন্ডোতে কেবল ফাইলটির নাম .gitignore। এবং এটি কাজ করবে।
আমি এইটি কেবল 1.7.3.1 গিট দিয়ে চেষ্টা করেছি এবং এর মতো একটি কাঠামো দিয়েছি:
repo/.git/
repo/.gitignore
repo/sites/default/settings.php
যেখানে repo
এইভাবে উপরে উল্লিখিত "রুট" রয়েছে (আমি এটিকে আপনার কার্যকারী গাছের মূল বলব), এবং .gitignore
কেবল এতে রয়েছে sites/default/settings.php
, উপেক্ষা করা আমার পক্ষে কাজ করে (এবং .gitignore
রেপোতে যুক্ত হয়েছে কি না তা বিবেচ্য নয়)। এটি কি আপনার রেপুর বিন্যাসের সাথে মেলে? যদি তা না হয় তবে কী আলাদা?
ভবিষ্যতে কারও ক্ষেত্রে একই সমস্যা হ'ল আমি যা করেছি:
আপনি যদি ব্যবহার
*
!/**/
!*.*
কোনও এক্সটেনশন ছাড়াই বাইনারি ফাইলগুলি সরানোর কৌশল, নিশ্চিত করুন যে সমস্ত অন্যান্য গিটাইনোররেখার নীচে রয়েছে। গিট উপরের থেকে .gitignore থেকে পড়বে, সুতরাং আমার গিটিগনরে আমার 'test.go' থাকলেও ফাইলটিতে এটি প্রথম ছিল এবং পরে 'অযৌক্তিক' হয়ে গেছে
!*.*
আমি উপরের ভিএস কোড টার্মিনালে বেশিরভাগ কমান্ড ব্যবহার করে দেখেছি এবং এর মতো ত্রুটি পেয়েছি:
fatal: pathspec '[dir]/[file]' did not match any files
আমি গিটিহাব ডেস্কটপে প্রকল্পটি খুলেছি এবং সেখান থেকে উপেক্ষা করেছি এবং এটি কার্যকর হয়েছে।