গিট স্টেজিং অঞ্চল থেকে কীভাবে ফাইলগুলি সরিয়ে ফেলা যায়?


547

আমি আমার স্থানীয় রেপোতে আমার কয়েকটি ফাইলে পরিবর্তন করেছি এবং তারপরে আমি git add -Aযা করেছি বলে মনে করি মঞ্চে খুব বেশি ফাইল যুক্ত হয়েছিল। আমি কীভাবে মঞ্চের অঞ্চল থেকে সমস্ত ফাইল মুছতে পারি?

আমি এটি করার পরে, আমি নিজেই করব git add "filename"


2
: আশা রাখি, আপনি এই খুঁজছেন stackoverflow.com/questions/1505948/...
sumitb.mdi

27
git statusআপনি যদি ফাইলগুলি আনস্টেজ করতে চান তবে কী করতে হবে তা ইতিমধ্যে আপনাকে জানিয়েছে।
মাইকেল ফৌকারাকিস

6
@ মিশেলফৌকারকিস গিটের অবস্থাটি তেমন সহায়ক নয় যদি আপনি আউটপুট (যেমন নোড_মডিউল) দিয়ে টার্মিনালটি বন্যা করে একটি সম্পূর্ণ ডিরেক্টরি আনস্টেজ করতে চান
হোয়াইটোক 6

2
ভবিষ্যতে, সমস্ত যোগ করার পরিবর্তে আপনি git add -pবা git add --patch(তারা একই রকম) এর সাথে স্বাচ্ছন্দ্য বোধ করতে চাইতে পারেন । এই পতাকাটি আপনাকে কোন ফাইল বা স্বতন্ত্র পরিবর্তনগুলিতে মঞ্চায়িত করতে চান তা ইন্টারেক্টিভভাবে বাছাই করতে দেয় - তারপরে আপনি কোন প্রতিশ্রুতিতে অন্তর্ভুক্ত থাকবেন সেই কাজের সাথে আপনি আরও অনেক সূক্ষ্ম দানা পেতে পারেন।
গাবে

উত্তর:


688

আপনি ব্যবহার করে সূচী থেকে ফাইলগুলি আনস্টেজ করতে পারেন

git reset HEAD -- path/to/file

ঠিক git addতেমন, আপনি ডিরেক্টরি দ্বারা পুনরাবৃত্তভাবে ফাইলগুলি আনস্টেজ করতে পারেন এবং আরও অনেক কিছু, তাই একবারে সমস্ত কিছু আনস্টেজ করার জন্য, এটি আপনার সংগ্রহস্থলের মূল ডিরেক্টরি থেকে চালান:

git reset HEAD -- .

এছাড়াও, ভবিষ্যতের রেফারেন্সের জন্য, আউটপুট git statusআপনাকে ফাইলগুলি এক রাজ্য থেকে অন্য রাজ্যে স্থানান্তরিত করার জন্য চালিত হওয়া কমান্ডগুলি জানায়।


5
$ git reset HEAD -- .উত্পাদিত fatal: Failed to resolve 'HEAD' as a valid ref.নোট যে আমি কখনও কোন প্রতিশ্রুতি করি নি; এটি এর git addপরে প্রথমgit init
প্যাট্রিজিও বার্তোনি

5
আপনি ব্যবহার করতে পারেন git reset @
অ্যালেক্স

@alex এটি কি কেবল সরল চেয়ে ভাল git reset?
অ্যান্টনি হ্যাচকিন্স

7
@ অ্যান্টনিহ্যাচকিন্স @এর সমার্থক শব্দ HEAD
অ্যালেক্স

সম্পূর্ণ আমার জন্য কাজ করেছেন, ধন্যবাদ!
Wayneseymour

303

ব্যবহার

git reset

সমস্ত পর্যায়ের ফাইল আনস্টেজ করতে।


3
আমি কি এটি জিজ্ঞাসা করতে পারি git reset HEAD --যে এটির সাথে কীভাবে পৃথক হয় বা এটি একই ক্রিয়াকলাপটি সম্পাদন করার আরও একটি সাশ্রয়ী উপায়?
ProNotion

1
@ প্রোটনশন রিসেট HEADডিফল্টরূপে ব্যবহার করে। --আপনার মধ্যে তাদের উদ্দেশ্য কি git reset HEAD --?
অ্যান্টনি হ্যাচকিন্স

@ অ্যান্টনি হ্যাচকিন্স এটি একটি সম্পূর্ণ স্টপ (পিরিয়ড) অনুসরণ করা উচিত ছিল এবং গ্রহণযোগ্য উত্তরে উদাহরণ থেকে নেওয়া হয়েছিল।
প্রোএনশন

11
@ প্রোটনস দুঃখিত, আমি আপনাকে ভুল বুঝেছি। প্রকল্পের সমস্ত ফাইল পুনরায় সেট করার git reset HEAD -- .সময় এটি কেবল বর্তমান ডিরেক্টরিতে এবং নীচে ফাইলগুলি পুনরায় সেট করে different git reset
অ্যান্টনি হ্যাচকিন্স

100

যদি আপনি ইতিমধ্যে অযাচিত ফাইলগুলির একগুচ্ছ প্রতিশ্রুতিবদ্ধ হয়ে থাকেন তবে আপনি সেগুলি আনস্টেজ করে এবং মুছে ফেলা হিসাবে চিহ্নিত করতে গিটকে বলতে পারেন (আসলে এগুলি মোছা না করে)

git rm --cached -r .

--cachedস্টেজিং এবং সূচী থেকে পাথগুলি নিজেরাই ফাইলগুলি সরিয়ে না ফেলে এবং -rডিরেক্টরিতে পুনরাবৃত্তির সাথে পরিচালিত করে তা সরানোর জন্য এটি বলে । এরপরে আপনি git addযে কোনও ফাইল ট্র্যাকিং রাখতে চান তা করতে পারেন।


আমি মনে করি এটি "গিট আরএম -"।
আলেকজান্ডার মিলস

1
"গিট আরএম -" দিয়ে ফাইলগুলি সরিয়ে না নেওয়ার বিষয়ে মারাত্মক ত্রুটি রয়েছে।
আলেকজান্ডার মিলস

@ অ্যালেক্সমিলস আমি সমস্ত উত্তর rmআনস্টেজ করার জন্য প্রকৃত বিকল্পগুলি উল্লেখ করার জন্য আমার উত্তরটি আপডেট করি ।
সর্বোচ্চ 18

2
আমি এটির মতো একটি একক ফাইলে এটি চেষ্টা করেছি: "গিট আরএম - আমার / ফাইল.জভা কেচড" এবং আমি সেই ফাইলটি এখনও মঞ্চে দেখছি, তবে মুছে ফেলা হিসাবে! @ ম্যাক্স আপনি যখন এই কমান্ডটি চালান তখন আপনার ফাইলগুলি কি আসলে মুছে ফেলা হয় বা কেবল বিনা পর্যায়ক্রমে হয়? আপনি যদি সেই আচরণটির সন্ধান না করেন তবে আমি উত্তর দিয়ে যাব।
অরওয়েলহিনডেনবার্গ

এটি প্রকাশ করার জন্য @ ওরওয়েলহিনডেনবার্গকে ধন্যবাদ! --cachedআপনি ইতিমধ্যে প্রতিশ্রুতিবদ্ধ ফাইল ট্র্যাকিং থামাতে সত্যিই হয়। সুতরাং ফাইলটি আসলে মুছে ফেলা হয়নি, তবে গিট মনে করে এটি এটি। আমি আমার উত্তরে এটি পরিষ্কার করে দিয়েছি।
সর্বাধিক

30

আপনি ব্যবহার করতে পারেন

git reset HEAD

তারপরে আপনি যে নির্দিষ্ট ফাইলগুলি চান তা যুক্ত করুন

git add [directory/]filename

আপনি -x প্যারামিটার যুক্ত করতে পারেন এবং উপেক্ষা করা ফাইলগুলিও মুছে ফেলা হবে। আপনি যদি আপনার .gitignore এর সাথে জগাখিচুড়ি করেন এবং সেখানে কিছু দরকারী (যেমন আমার ক্ষেত্রে) থাকে তবে এটি কার্যকর। ( git-scm.com/docs/git-clean )
কিপারক

1
অতিরিক্ত ফোল্ডার সহ, git statusআপনাকে ডিরেক্টরি ডিরেক্টরি পরিষ্কার বলবে - মিথ্যা! git clean -dfধন্যবাদ, ধন্যবাদ।
লিও

5
নোট যা git clean -dfস্থায়ীভাবে ফাইলগুলি মুছবে। ইউনিক্স-মতো সিস্টেমে এটি কল করবে unlink()এবং আপনার মোছা ফাইলগুলি পুনরুদ্ধারযোগ্য হবে না।
Hanxue 31'16

11
ওপি ফাইলগুলি আনস্টেজ করার বিষয়ে জিজ্ঞাসা করে। আপনি তাকে ফাইলগুলি মুছতে পরামর্শ দিন। আমি আপনাকে উত্তর দেওয়ার আগে স্টেজিং এরিয়াটি কী তা সম্পর্কে পড়তে পরামর্শ দেব।
অ্যান্টনি হ্যাচকিন্স

আমার সম্পূর্ণ সংরক্ষিত প্রকল্প মুছে ফেলার জন্য আপনাকে ধন্যবাদ।
ভ্যানসুইটা জুনিয়র

7

অন্যান্য উত্তরে যেমন উল্লেখ করা হয়েছে, আপনার ব্যবহার করা উচিত git reset। এটি এর ক্রিয়াটিকে পূর্বাবস্থায় ফিরিয়ে আনবে git add -A

দ্রষ্টব্য: git reset এটি সমান git reset --mixedযা এটি করে

সূচি পুনরায় সেট করে তবে কার্যনির্বাহী গাছ নয় (অর্থাত্ পরিবর্তিত ফাইলগুলি সংরক্ষিত থাকলেও প্রতিশ্রুতিবদ্ধ হিসাবে চিহ্নিত করা হয় না) এবং আপডেট করা হয়নি বলে প্রতিবেদন করে। এটি ডিফল্ট কর্ম হয়। [ গিট রিসেট ]


2
.. এবং মঞ্চ অঞ্চল থেকে একটি ফাইল মুছে ফেলার জন্য আপনি এটি করতে পারেনgit reset filenameToNotCommit
শেরিলহোমান

5

এখন v2.24.0 এ পরামর্শ দেয়

git restore --staged .

ফাইলগুলি আনস্টেজ করতে।


1

আপনি কয়েকটি উপায়ে মঞ্চ অঞ্চলটি পুনরায় সেট করতে পারেন:

  1. হেড পুনরায় সেট করুন এবং নীচের মতো আবারও চেক ইন করতে সমস্ত প্রয়োজনীয় ফাইল যুক্ত করুন:

     git reset HEAD ---> removes all files from the staging area
     git add <files, that are required to be committed>
     git commit -m "<commit message>"
     git push 
    

এই উত্তরটি বিদ্যমান ছয়টি উত্তর থেকে কী আলাদা করে তোলে?
অ্যান্টনি হ্যাচকিন্স

1

স্টেজিং এরিয়া ব্যবহার থেকে সমস্ত ফাইল সরিয়ে ফেলতে -
git reset
নির্দিষ্ট ফাইলের ব্যবহার সরাতে -
git reset "File path"


1

ব্যবহার

git reset HEAD

এটি মঞ্চ অঞ্চল থেকে সমস্ত ফাইল সরিয়ে ফেলবে


1

যদি অযাচিত ফাইলগুলি মঞ্চে যুক্ত করা হয় তবে এখনও প্রতিশ্রুতিবদ্ধ না হয় তবে একটি সাধারণ রিসেট কাজটি করবে:

$ git reset HEAD file
# Or everything
$ git reset HEAD .

কেবলমাত্র বর্তমান কার্যনির্বাহী ডিরেক্টরিতে অচিহ্নবদ্ধ পরিবর্তনগুলি অপসারণ করতে, ব্যবহার করুন:

git checkout -- .

0

git reset HEAD <file>...ফাইলগুলি আনস্টেজ করতে " " ব্যবহার করুন

উদাহরণস্বরূপ: সমস্ত ফাইল আনস্টেজ করতে

git reset HEAD .

একটি ফাইল আনস্টেজ করতে

git reset HEAD nameFile.txt

-3

আমি এই সমস্ত পদ্ধতি চেষ্টা করেছিলাম কিন্তু কেউই আমার পক্ষে কাজ করেনি। আমি .git ফাইল ব্যবহার করে মুছে rm -rf .gitফর্ম স্থানীয় সংগ্রহস্থলে আবার এবং তারপর করেনি git initএবং git addএবং রুটিন কমান্ড। এটা কাজ করেছে.


4
গিট ডকস পড়া সাধারণত xkcd.com/1597 ;) এর পরামর্শ অনুসরণ করার চেয়ে বেশি ফলপ্রসূ হয়
অ্যান্টনি হ্যাচকিন্স

1
আপনার নির্দিষ্ট ক্ষেত্রে হয়ত আপনার অখণ্ডতার সমস্যা ছিল এবং এটি বিকল্পটি বাকী ছিল, তবুও এটি প্রস্তাবিত নয়।
শাদ

দয়া করে এটি করবেন না, আপনি আপনার পুরো গিট রেপো ধ্বংস করবেন।
লেনার্ট রোল্যান্ড

-5

স্টেজিং এরিয়ায় ইতিমধ্যে থাকা আপনার ফাইলটিকে পূর্বাবস্থায় ফেলার সর্বোত্তম উপায় হ'ল গিট রিসেট --হর যা আপনার স্টেজযুক্ত ফাইলগুলি ফিরিয়ে আনবে । এখনই যত্নবান, এটি পর্যায়বদ্ধ এবং অচিহ্নবদ্ধ পরিবর্তনগুলি সরিয়ে ফেলবে।


2
এটি ভুল এবং বিপজ্জনক !!! ওপি ফাইলগুলি "পরে কেবল পুনরায় যুক্ত করতে" চায় তবে --hardসেগুলি চিরতরে মুছে দেয়।
অ্যান্টনি হ্যাচকিন্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.