দ্রষ্টব্য: ফ্যালঞ্জেমার ২০১১ সালে কিছু পরীক্ষা করেছিলেন (যাতে তারা পুরানো হতে পারে), এবং তার অনুসন্ধানগুলি এখানে :
অপারেশনস
- স্থানীয় সংগ্রহস্থল এবং প্রবাহে ফাইল উভয়ই পরিবর্তিত হয়েছে
git pull:
গিট যাইহোক স্থানীয় পরিবর্তনগুলি সংরক্ষণ করে।
সুতরাং আপনি দুর্ঘটনাক্রমে যে কোনও পতাকা ব্যবহার করে চিহ্নিত করেছেন এমন কোনও ডেটা হারাবেন না।
- সাথে ফাইল
assume-unchangedপতাকা : গিট স্থানীয় ফাইল ওভাররাইট করতে পারে না। পরিবর্তে এটি দ্বন্দ্বগুলি আউটপুট দেয় এবং সেগুলি কীভাবে সমাধান করা যায় সে বিষয়ে পরামর্শ দেয়
skip-worktreeপতাকা সহ ফাইল : গিট স্থানীয় ফাইল ওভাররাইট করতে পারে না। পরিবর্তে এটি দ্বন্দ্বগুলি আউটপুট দেয় এবং সেগুলি কীভাবে সমাধান করা যায় সে বিষয়ে পরামর্শ দেয়
- ফাইল স্থানীয় সংগ্রহস্থল এবং প্রবাহ উভয়ই পরিবর্তিত হয়, যাইহোক
ব্যবহার করে টানতে চেষ্টা করে
git stash
git pull
skip-worktree কিছু অতিরিক্ত ম্যানুয়াল কাজের ফলাফল করে তবে আপনার কোনও স্থানীয় পরিবর্তন থাকলে কমপক্ষে কোনও ডেটা হারাবেন না।
assume-unchangedপতাকা সহ ফাইল : সমস্ত স্থানীয় পরিবর্তনগুলি পুনরুদ্ধার করার কোনও সম্ভাবনা ছাড়াই তা বাতিল করে দেয়। প্রভাবটি ' git reset --hard' এর মতো । 'git pull ' কল সফল হবে
skip-worktreeপতাকা সহ ফাইল : স্ট্যাশ skip-worktreeফাইলগুলিতে কাজ করবে না । ' git pull' উপরের মত একই ত্রুটি নিয়ে ব্যর্থ হবে। বিকাশকারী skip-worktreeস্ট্যাশ করতে এবং ব্যর্থতা সম্পূর্ণ করতে সক্ষম হয়ে ম্যানুয়ালি পতাকাটি পুনরায় সেট করতে বাধ্য হয় pull।
- কোনও স্থানীয় পরিবর্তন নেই, আপস্ট্রিম ফাইল পরিবর্তিত হয়েছে
উভয় পতাকাই আপনাকে প্রবাহের পরিবর্তনগুলি আটকাতে পারবে না। গিট সনাক্ত করে যে আপনি প্রতিশ্রুতি ভঙ্গ করেছেন এবং পতাকাটি পুনরায় সেট করে বাস্তবতা প্রতিফলিত করতে বেছে নিয়েছেন।
git pull
assume-unchanged
assume-unchangedপতাকা সহ ফাইল : সামগ্রী আপডেট হয়েছে, পতাকা হারিয়েছে।
' git ls-files -v' দেখায় যে পতাকাটি H(থেকে h) এ পরিবর্তিত হয়েছে ।
skip-worktreeপতাকা সহ ফাইল : সামগ্রী আপডেট করা হয়েছে, পতাকা সংরক্ষণ করা হয়েছে।
' git ls-files -v' Sপূর্বের মতো একই পতাকা প্রদর্শন করবে pull।
- স্থানীয় ফাইল পরিবর্তিত হওয়ার সাথে
গিট ফাইলটি স্পর্শ করে না এবং বাস্তবের প্রতিফলন করে (ফাইলটি পরিবর্তিত হওয়ার প্রতিশ্রুতি দেওয়া ফাইলটি আসলে পরিবর্তিত হয়েছিল) ।
git reset --hard
skip-worktreeassume-unchanged
- ফাইল
assume-unchangedপতাকা: ফাইল বিষয়বস্তু প্রত্যাবর্তন করা হয়। ফ্ল্যাগটি H(থেকে h) এ পুনরায় সেট করা হয়েছে ।
- ফাইল
skip-worktreeপতাকা: ফাইল বিষয়বস্তু অক্ষত। পতাকা একই থাকে।
তিনি নিম্নলিখিত বিশ্লেষণ যোগ করেছেন:
দেখে মনে skip-worktreeহচ্ছে আপনার স্থানীয় ডেটা সংরক্ষণের জন্য খুব চেষ্টা করছে । তবে এটি সুরক্ষিত থাকলে আপনাকে উজানের পরিবর্তনগুলি পেতে বাধা দেয় না। প্লাস গিটটি পতাকাটি পুনরায় সেট করে না pull।
তবে ' reset --hard' আদেশটি উপেক্ষা করা কোনও বিকাশকারীর পক্ষে খারাপ অভ্যাস হতে পারে become
Assume-unchangedpullঅপারেশনে পতাকাটি হারিয়ে যেতে পারে এবং এই জাতীয় ফাইলগুলির মধ্যে স্থানীয় পরিবর্তনগুলি গিট করা গুরুত্বপূর্ণ বলে মনে হয় না।
দেখা:
তিনি শেষ করেছেন:
আসলে পতাকা দুটিই যথেষ্ট স্বজ্ঞাত নয় ।
assume-unchangedধরে নেওয়া যায় যে কোনও বিকাশকারীকে কোনও ফাইল পরিবর্তন করা উচিত নয়। যদি কোনও ফাইল পরিবর্তন করা হয় - তবে সেই পরিবর্তনটি গুরুত্বপূর্ণ নয়। এই পতাকাটি এসডিকে-র মতো ফোল্ডারগুলি পরিবর্তন না করে পারফরম্যান্সের উন্নতির জন্য।
কিন্তু যদি প্রতিশ্রুতিটি ভঙ্গ হয়ে যায় এবং কোনও ফাইল আসলে পরিবর্তিত হয়, গিট বাস্তবটিকে প্রতিফলিত করতে পতাকাটিকে উল্টে দেয়। সাধারণত ঠিক-পরিবর্তে-পরিবর্তন-করা ফোল্ডারগুলিতে কিছু অসম্পূর্ণ পতাকা থাকা ঠিক আছে ok
অন্যদিকে skip-worktreeআপনি যখন গিটকে নির্দিষ্ট ফাইলটি কখনও স্পর্শ না করার নির্দেশ দেন তখন কার্যকর হয়। এটি ইতিমধ্যে একটি ট্র্যাক করা কনফিগার ফাইলের জন্য দরকারী।
আপস্ট্রিমের মূল সংগ্রহস্থল কিছু উত্পাদন-প্রস্তুত কনফিগারেশন হোস্ট করে তবে কিছু স্থানীয় টেস্টিং করতে সক্ষম হতে আপনি কনফিগারেশনে কিছু সেটিংস পরিবর্তন করতে চান। এবং আপনি উত্পাদন কনফিগারকে প্রভাবিত করতে দুর্ঘটনাক্রমে এ জাতীয় ফাইলের পরিবর্তনগুলি পরীক্ষা করতে চান না। যে ক্ষেত্রে skip-worktreeনিখুঁত দৃশ্য করে তোলে।
গিট ২.২৫.১ (ফেব্রুয়ারি ২০২০) দিয়ে উপরে উল্লিখিত "প্রকৃতপক্ষে পতাকাগুলির মধ্যে উভয়ই যথেষ্ট স্বজ্ঞাত নয়" আরও স্পষ্ট করে বলা হয়েছে:
কমিট 7a2dc95 দেখুন , প্রতিশ্রুতিবদ্ধ 1b13e90 (22 জানুয়ারী 2020) দ্বারা ব্রায়ান এম। কার্লসন ( bk2204) ।
(দ্বারা একীভূত junio সি Hamano - gitster- মধ্যে কমিট 53a8329 , 30 জানুয়ারী 2020)
( গীত মেইলিং লিস্টের )
doc: ব্যবহারকারীদের ট্র্যাক করা ফাইল উপেক্ষা করার চেষ্টা থেকে বিরত করুন
সাইন-অফ-বাই: জেফ কিং
স্বাক্ষরিত-অফ-বাই: ব্রায়ান মি। কার্লসন
গিট ট্র্যাক করে এমন কোনও ফাইলের পরিবর্তনগুলি উপেক্ষা করতে ব্যবহারকারীদের পক্ষে এটি বেশ সাধারণ বিষয়।
এই ক্ষেত্রে সাধারণ পরিস্থিতিগুলি হ'ল আইডিই সেটিংস এবং কনফিগারেশন ফাইলগুলি, যা সাধারণত ট্র্যাক করা উচিত নয় এবং সম্ভবত একটি টেম্প্লেটিং মেকানিজম ব্যবহার করে ট্র্যাক করা ফাইলগুলি থেকে উত্পন্ন করা উচিত।
তবে, ব্যবহারকারীরা অনুমান-অপরিবর্তিত রয়েছে এবং ওয়ার্কট্রি বিটগুলি এড়িয়ে যান এবং যেকোন উপায়ে এটি করার জন্য তাদের ব্যবহার করার চেষ্টা করেন।
এটি সমস্যাযুক্ত, কারণ যখন এই বিটগুলি সেট করা হয়, তখন অনেক অপারেশন ব্যবহারকারীর প্রত্যাশা অনুযায়ী আচরণ করে, তবে git checkoutফাইলটি প্রতিস্থাপন করার প্রয়োজনে তারা সাধারণত সহায়তা করে না ।
এক্ষেত্রে কোনও বুদ্ধিমান আচরণ নেই, কারণ কখনও কখনও ডেটাটি মূল্যবান হয় যেমন নির্দিষ্ট কনফিগারেশন ফাইলগুলি এবং কখনও কখনও এটি অপ্রাসঙ্গিক ডেটা হয় যা ব্যবহারকারীকে ফেলে দিতে খুশি হবে।
যেহেতু এটি কোনও সমর্থিত কনফিগারেশন নয় এবং ব্যবহারকারীরা সাধারণ উদ্বেগ এবং বিভ্রান্তির সৃষ্টি করে অনিচ্ছাকৃত উদ্দেশ্যে বিদ্যমান বৈশিষ্ট্যগুলির অপব্যবহার করার প্রবণতা রয়েছে , তাই আসুন git update-indexব্যবহারকারীর ডকুমেন্টেশনে বিদ্যমান আচরণ এবং সমস্যাগুলি ডকুমেন্টেশনে ডকুমেন্ট করা যাতে ব্যবহারকারীরা জানেন যে তাদের বিকল্প সমাধানগুলি অন্বেষণ করা উচিত।
এছাড়াও, অনেকগুলি পরিবেশে সফলভাবে ব্যবহৃত সুপরিচিত পন্থাগুলি হওয়ায় কনফিগারেশন ফাইলগুলির সাধারণ ক্ষেত্রে কাজ করার জন্য একটি প্রস্তাবিত সমাধান সরবরাহ করি।
git update-indexMan পৃষ্ঠা এখন রয়েছে:
ব্যবহারকারীরা প্রায়শই গিটকে ট্র্যাকযুক্ত ফাইলগুলিতে পরিবর্তনগুলি উপেক্ষা করতে বলার জন্য assume-unchangedএবং skip-worktreeবিটগুলি ব্যবহার করার চেষ্টা করেন । এটি আশানুরূপভাবে কাজ করে না, যেহেতু গিট নির্দিষ্ট ক্রিয়াকলাপ সম্পাদন করার সময় সূচকের বিপরীতে কার্যকারী ট্রি ফাইলগুলি পরীক্ষা করতে পারে। সাধারণভাবে, গিট ট্র্যাক করা ফাইলগুলিতে পরিবর্তনগুলি উপেক্ষা করার কোনও উপায় সরবরাহ করে না, তাই বিকল্প সমাধানের প্রস্তাব দেওয়া হচ্ছে।
উদাহরণস্বরূপ, আপনি যে ফাইলটি পরিবর্তন করতে চান সেটি যদি কনফিগার ফাইলের কিছু প্রকারের হয় তবে সংগ্রহস্থলটিতে একটি নমুনা কনফিগারেশন ফাইল অন্তর্ভুক্ত থাকতে পারে যা উপেক্ষা করা নাম এবং অনুলিপি করে অনুলিপি করা যেতে পারে। সংগ্রহস্থল এমনকি নমুনা ফাইলটিকে একটি টেম্পলেট হিসাবে বিবেচনা করতে, এটি স্বয়ংক্রিয়ভাবে সংশোধন ও অনুলিপি করার জন্য একটি স্ক্রিপ্ট অন্তর্ভুক্ত করতে পারে।
যে শেষ অংশ আমি একজন সাধারণ বর্ণনা করে তা হল সামগ্রীর ফিল্টার ছাপ / পরিষ্কার স্ক্রিপ্ট উপর ভিত্তি করে চালক ।
.gitignoreএকই উদ্দেশ্যে ব্যবহার করছি । এই সমাধান আপনার জন্য কাজ করবে?