'Rm' এর পরিবর্তে কোনও ফাইল সরানোর জন্য 'গিট আরএম' ব্যবহার করবেন কেন?


171

এসভিএন-তে, ফাইল সিস্টেম থেকে সরাসরি কিছু সরানো (এসএনএন ব্যবহার না করে) প্রচুর মাথাব্যাথা তৈরি করে।

ব্যবহার করার সময় আমি এটি কোনও সমস্যা হিসাবে gitপাইনি, তবে আমি লক্ষ্য করেছি যে গিটটির নিজস্ব rmবাস্তবায়ন রয়েছে ( git rm)।

মধ্যে পার্থক্য কি rmএবং git rm?

উত্তর:


253

আপনি যদি কেবল ব্যবহার করেন তবে আপনার এটি rmঅনুসরণ করতে হবে git add <fileRemoved>git rmএক পদক্ষেপে এটি করে।

আপনি git rm --cachedযা সূচক থেকে ফাইলটি সরিয়ে ফেলবেন তা ব্যবহার করতে পারেন (এটি পরবর্তী প্রতিশ্রুতিতে মুছে ফেলার জন্য মজাদার), তবে আপনার অনুলিপি স্থানীয় ফাইল সিস্টেমে রাখুন।


ভাল উত্তর. আমি git reset --hardবিচ্ছিন্ন হেড স্টেট থেকে বেরিয়ে আসার জন্য মাস্টারের একটি চেকআউট করতে সক্ষম হয়েছি কারণ আমি জানতাম যে আমার কোনও আপত্তিজনক পরিবর্তন হয়নি। আপনি যদি নিজের পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ না করেন তবে আপনি গিট স্ট্যাশ করতে চাইতে পারেন, তবে আমি গিটে তুলনামূলকভাবে নতুন তাই আমি সঠিক আদেশটি জানি না। আপনি যদি 2014 বা তার পরে এখানে এসেছেন তবে আমি আশা করি এই উত্তরটি আপনার পক্ষে কার্যকর ছিল।
এরিক হিপারল - কোডস্লেয়ার 2010

@ অ্যান্ডি - যদি আমি এটি ব্যবহার করে rm(এর পরিবর্তে git rm) ব্যবহার করে অনেকগুলি ফাইল মুছে ফেলি এবং এখন gitসেগুলি ট্র্যাক করতে চাই না । পরিবর্তনগুলি ফিরিয়ে আনার কোনও উপায় আছে? আমি প্রথম স্থানটিতে ব্যবহার না করায় আমি মুছে ফেলা হিসাবে gitচালিত করতে চাই । rmgit rm
চেতন অরবিন্দ পাতিল

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

12

ফাইলগুলি ব্যবহার করে অপসারণ rmপ্রতি সেবায় কোনও সমস্যা নয়, তবে আপনি যদি ফাইলটি অপসারণের বিষয়ে প্রতিশ্রুতি রাখতে চান তবে আপনাকে যে git rmকোনও উপায়ে করতে হবে , সুতরাং আপনি সম্ভবত ব্যাট থেকে ঠিক সেভাবেই এটি করতে পারেন।

এছাড়াও, আপনার শেলের উপর নির্ভর করে, git rmফাইলটি মুছে ফেলার পরে, আপনি ট্যাব-সমাপ্তি পাবেন না সুতরাং আপনাকে নিজেই পথটি বানান করতে হবে, আপনি যদি git rmফাইলটি এখনও বিদ্যমান থাকেন তবে ট্যাব সমাপ্তি স্বাভাবিক হিসাবে কাজ করবে।


7

git rmসূচক এবং কার্যক্ষম ডিরেক্টরি থেকে ফাইলটি সরিয়ে ফেলবে (যদি আপনি ব্যবহার করেন তবে কেবল সূচক --cached) যাতে মুছে ফেলাটি পরবর্তী প্রতিশ্রুতিবদ্ধতার জন্য মঞ্চস্থ হয়।


4

তবে, আপনি যদি গিট আরএম এর পরিবর্তে আরএম ব্যবহার না করে থাকেন। আপনি গিট অ্যাড এড়িয়ে যেতে এবং ব্যবহার করে সরাসরি পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ করতে পারেন:

git commit -a


3

সূচী থেকে বা কার্যকারী গাছ এবং সূচি থেকে ফাইলগুলি সরান। গিট আরএম কেবল আপনার ওয়ার্কিং ডিরেক্টরি থেকে কোনও ফাইল সরিয়ে ফেলবে না।

আপনি কীভাবে কোনও ফাইল মুছতে rm -fপারেন এবং তারপরে এটি আপনার সূচী থেকে মুছে ফেলতে পারেন তা এখানেgit rm

$ rm -f index.html
$ git status -s
 D index.html
$ git rm index.html
rm 'index.html'
$ git status -s
D  index.html

তবে আপনি ন্যায়বিচারের সাথে একসাথে সব করতে পারেন git rm

$ git status -s
$ git rm index.html
rm 'index.html'
$ ls
lib vendor
$ git status -s
D  index.html

2

গিট আরএম ব্যবহার করার সময়, অপসারণটি আপনার পরবর্তী প্রতিশ্রুতির অংশ হবে। সুতরাং আপনি যদি পরিবর্তনটি চাপতে চান তবে আপনাকে গিট আরএম ব্যবহার করা উচিত


2

অ্যান্ডির উত্তরে যুক্ত করার সাথে সাথে এর অতিরিক্ত উপযোগিতা রয়েছে git rm:

  1. সুরক্ষা : git rmপরিবর্তে এটি করার সময় rm, HEADকোনও ফাইলের সংস্করণ এবং মঞ্চের সূচী বা কার্যনির্বাহী ট্রি সংস্করণের মধ্যে কোনও তাত্পর্য থাকলে গিট অপসারণটিকে অবরুদ্ধ করবে । এই ব্লকটি অগ্রগতি পরিবর্তনগুলি অপসারণ রোধ করার জন্য একটি সুরক্ষা ব্যবস্থা।

  2. রক্ষা : git rm --dry-run। এই বিকল্পটি একটি সেফগার্ড যা git rmকমান্ডটি কার্যকর করবে কিন্তু ফাইলগুলি মুছবে না। পরিবর্তে এটি কোন ফাইলগুলি সরিয়ে ফেলবে তা আউটপুট দেবে।

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