ফাইল এবং ফোল্ডারগুলি সহ অনির্ধারিত পরিবর্তনগুলি কীভাবে ফিরিয়ে আনবেন?


1070

কার্যনির্বাহী গাছ এবং সূচকগুলিতে সমস্ত আপত্তিজনক পরিবর্তনগুলি ফিরিয়ে আনতে এবং সদ্য নির্মিত ফাইল এবং ফোল্ডারগুলি সরিয়ে ফেলার জন্য কি গিট কমান্ড রয়েছে?



1
ঠিক আছে, নীচের উত্তরগুলি স্মরণে রাখার জন্য বিভিন্ন বিচিত্র এবং মুশকিলের সবগুলি পড়েছি, তাদের সাবধানতা এবং প্রান্তের কেস এবং "আপনার যদি এক্সএক্সএক্স থাকে তবে কাজ করেন নি", এবং সমস্ত রেपो মুছে ফেলার সাথে আটকে গিয়েছি, সমস্ত সম্পাদিত এবং যুক্ত ফাইলগুলি মুছে ফেলার জন্য এটি ক্লোন করে রেখেছি । এছাড়াও মাত্র দুটি কমান্ড। rm -r প্রকল্পদির; গিট ক্লোন এক্সএক্সএক্সএক্স আমার জন্য এটি একটি ঘন ঘন অপারেশন - এটির চারপাশে একটি রেপো প্লে পরীক্ষা করে দেখুন, তারপরে কোনও ক্লিন চেকআউটে ফিরে আসতে চাই যাতে আমি এটি পরিবর্তন করতে শুরু করতে পারি। দুর্দান্ত নয়, তবে 100% কাজ করে। আশা করছি একদিন তারা এর জন্য একটি সহজ কমান্ড যুক্ত করবে।
জন লিটল

উত্তর:


1770

আপনি এই দুটি কমান্ড চালাতে পারেন:

# Revert changes to modified files.
git reset --hard

# Remove all untracked files and directories.
# '-f' is force, '-d' is remove directories.
git clean -fd

147
গিট ক্লিন চালানোর আগে পরিবর্তনগুলি পূর্বরূপ দেখতে 'গিট ক্লিন-ইন্ড' চালানো ভাল ধারণা আপনি যাতে যত্নবান হন না এমন ফাইল বা ডিরেক্টরিগুলি সরিয়ে ফেলা হবে না তা নিশ্চিত করতে।
jpw

79
কাউকে ডক্সে একটি ট্রিপ সংরক্ষণ করুন: -ফ বল প্রয়োগ, -d ডিরেক্টরিগুলি সরান, -ন শুকনো রান (এছাড়াও - শুকনো রান; এখনও কিছু না করে আউটপুট দেখান)
অ্যারোন ক্যাম্পবেল

12
git clean -iএকটি ইন্টারেক্টিভ মোড জন্য।
গ্যালাথ

এটি আমার স্টেস্ট না করা ফাইলগুলি পুনরায় সেট করে নি, আমাকে প্রথমে তাদের মঞ্চস্থ করতে হয়েছিল।
অ্যারন লরিঞ্জ ২

4
@ ইগোরগানাপলস্কি আপনি সম্ভবত মার্জ সংঘাতের মধ্যবর্তী স্থানে রয়েছেন। চালানোর চেষ্টা করুন git merge --abort
htanata

555

আপনি যদি কেবল বর্তমান ওয়ার্কিং ডিরেক্টরিতে পরিবর্তনগুলি ফিরিয়ে নিতে চান তবে ব্যবহার করুন

git checkout -- .

এবং তার আগে, আপনি আসলে কোনও পদক্ষেপ না করেই উল্টে ফেলা হবে এমন ফাইলগুলি তালিকাভুক্ত করতে পারেন, কেবল কী ঘটবে তা যাচাই করার জন্য:

git checkout --

1
যখন আমি এটি চেষ্টা করি তখন আমি "ত্রুটি: প্যাথস্পেক 'পাই।' গিট হিসাবে পরিচিত কোনও ফাইল (গুলি) এর সাথে মেলে না
মাইকে কে

34
এই এবং এর মধ্যে পার্থক্য কি git reset --hard?
ফিলিপ আলমেডা

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

তবে আপনি যদি চেকআউট ব্যবহার করেন এবং আপনি ফাইলগুলি সংশোধন করেছেন, সেমিডিডি ফিরে আসবে যে আমার একত্রীকরণের প্রয়োজন, এমনকি যখন আমার কেবল এই পরিবর্তনগুলি ফিরিয়ে নেওয়া দরকার
ভিনিসিয়াস মন্টিরিও

7
গিট চেকআউট - কেবল উল্টানো ফাইলগুলি তালিকাভুক্ত করবে (কোনও পদক্ষেপ নেই, কেবল তালিকা নয়)। গিট চেকআউট করার আগে কোন ফাইলগুলি প্রভাবিত হবে তা যদি আপনি দেখতে চান তবে এটি দরকারী -
ক্রিশ শ্রীনিবাসন

107

কার্যকারী ডিরেক্টরিতে পরিবর্তনগুলি বাতিল করতে "গিট চেকআউট - ..." ব্যবহার করুন

git checkout -- app/views/posts/index.html.erb

অথবা

git checkout -- *

যেমন গিট স্ট্যাটাসে আনস্টেজ করা ফাইলগুলিতে করা সমস্ত পরিবর্তন সরিয়ে দেয়

modified:    app/controllers/posts.rb
modified:    app/views/posts/index.html.erb

5
git checkout -- *পরিবর্তিত ফাইলগুলি যেখানে অবস্থিত সেই ডিরেক্টরিটিতে না থাকলে আমার পক্ষে কাজ করে না। পুরো সংগ্রহস্থল জুড়ে সমস্ত ফাইল চেকআউট করতে, আপনাকে অবশ্যই করতে হবেgit checkout -- :/
ওয়াল্ডরিয়াস

ইন git checkout -- *, তারারটি বর্তমান ডিরেক্টরিতে সমস্ত ফাইল এবং ডিরেক্টরি সহ শেল দ্বারা প্রতিস্থাপিত হয়। সুতরাং এটি উপ-ডিরেক্টরিতে যাওয়া উচিত। এটা আমার জন্য কাজ করে. তবে সিনট্যাক্সটি ": /" হাইলাইট করার জন্য ধন্যবাদ যা আমার মতে ক্লিনারটি পরিষ্কার করে।
এমকুলিভ

53

একটি অপ্রয়োজনীয় উপায় হ'ল এই দুটি কমান্ড চালানো:

  1. git stash এটি আপনার পরিবর্তনগুলি স্ট্যাশে স্থানান্তরিত করবে, আপনাকে আবার হেডের রাজ্যে ফিরিয়ে আনবে
  2. git stash drop এটি শেষ কমান্ডে নির্মিত সর্বশেষ স্ট্যাশ মুছে ফেলবে।

3
এটি অননুমোদিত পরিবর্তনের জন্য কাজ করে না, কেবল প্রতিশ্রুতিবদ্ধ পরিবর্তনের জন্য।
b0xxed1n

4
আমি এটি অনির্ধারিত পরিবর্তনের জন্য ব্যবহার করেছি এবং এটি কার্যকর হয়।
পল ডি এডেন

7
@ b0xxed1n স্ট্যাশিং সমস্ত আপত্তিজনক পরিবর্তন সম্পর্কে এবং স্পষ্টতই এটি তাদের জন্য কার্যকর হয়।
টিজে

আপত্তিজনক পরিবর্তনগুলি সংরক্ষণ করার জন্য গিট স্ট্যাশ তৈরি করা হয়েছিল যাতে আপনি .. প্রতিশ্রুতি না দিয়ে সেভ করতে পারেন।
রব

নিম্নলিখিত ত্রুটিতে গিট স্ট্যাশ ফলাফল:fatal: git-write-tree: error building trees Cannot save the current index state
ইগোরগানাপলস্কি

19
git clean -fd

সাহায্য করেনি, নতুন ফাইলগুলি রয়ে গেছে। আমি যা করেছি তা হ'ল সম্পূর্ণ কার্যকারী গাছ মুছে ফেলা এবং তারপরে

git reset --hard

দেখুন " আমি Git মধ্যে আমার স্থানীয় পরিশ্রমী ডিরেক্টরি কিভাবে পরিষ্কার করবেন? পরামর্শ যোগ করার জন্য জন্য" -xপরিষ্কার করার বিকল্প:

git clean -fdx

নোট -x ফ্ল্যাগ গিট দ্বারা উপেক্ষা করা সমস্ত ফাইল সরিয়ে ফেলবে তাই সাবধানতা অবলম্বন করুন (আমি যে উত্তরে উল্লেখ করেছি সে বিষয়ে আলোচনা দেখুন)।


-ফডিএক্স কি? "বল, ডিরেক্টরি এবং এক্স হল?
আদি প্রসত্যও

@ অ্যাডিপ্র্যাসিটো-এক্স পতাকা সমস্ত উপেক্ষা করা ফাইলগুলিও সরিয়ে দেয়; এটি একটি অনাকাঙ্ক্ষিত প্রভাব হতে পারে তাই আমি আমার উত্তর আপডেট করেছি।
Fr0sT

আমি এখনও রিবেস করতে পারি না। আমি ত্রুটিটি পেয়েছি: ত্রুটি: পরিবর্তনগুলিতে মার্জ করতে ব্যর্থ। প্যাচটি 0003 এ ব্যর্থ হয়েছিল ফিরে কলিং তৈরি করুন যে ব্যর্থ হয়েছে সেই প্যাচের অনুলিপিটি পাওয়া যায়:
ইগরগানাপলস্কি

13

আমি মনে করি আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন: git reset --hard


হুম ... আমি এটি করেছি তবে আমার ফাইলগুলি এখনও আছে। আমার কিছু করা উচিত?
এমএম

1
গিট রিসেটটি কেবল কার্যকারী গাছের আপত্তিজনক পরিবর্তনগুলিকে ফিরিয়ে দেয়। এটি নতুন ফাইল এবং ফোল্ডারগুলি সরিয়ে ফেলবে না। গিট দিয়ে কীভাবে করবেন তা সম্পর্কে আমি নিশ্চিত নই
জোসনিধীন

1
সুতরাং, আমরা যদি নতুন ফাইল এবং ফোল্ডার যুক্ত করে একটি ডিরেক্টরি ডিরেক্টরি পরিবর্তন করি এবং তারপরে আমরা সেই ডিরেক্টরিটিকে পূর্বের অবস্থায় (ডাব্লু / ফাইল এবং ফোল্ডারগুলি আউট) ফিরিয়ে দিতে চাই, আমরা কি গিট দিয়ে তা করতে পারি না? সুতরাং আমরা সেরা ফাইল ফাইল স্থিতি ফিরে করতে পারেন? তবে একবার আমরা একটি ফাইল তৈরি করি, আমরা যদি ফাইলটি ম্যানুয়ালি না করি তবে আমরা ফাইলটি সরাতে পারি না?
এমইএম

6

দয়া করে মনে রাখবেন যে এখনও এমন ফাইল থাকতে পারে যা অদৃশ্য হয়ে যাবে বলে মনে হচ্ছে - সেগুলি অশিক্ষিত হতে পারে তবে গিট সম্ভবত সিআরএলএফ / এলএফ পরিবর্তনের কারণে সম্পাদিত হিসাবে চিহ্নিত হতে পারে। আপনি .gitattributesসম্প্রতি কিছু পরিবর্তন করেছেন কিনা দেখুন ।

আমার ক্ষেত্রে আমি .gitattributesফাইলটিতে সিআরএলএফ সেটিংস যুক্ত করেছি এবং এর ফলে সমস্ত ফাইল "পরিবর্তিত ফাইল" তালিকায় রয়ে গেছে। .Gitattributes সেটিংস পরিবর্তন করার ফলে সেগুলি অদৃশ্য হয়ে যায়।


6

আপনি যদি আপনার সর্বশেষ প্রতিশ্রুতি অনুসারে অনুলিপি পরিবর্তন করতে চান (তবে এটি কেবল আপনার কার্যকরী অনুলিপিটিতে থাকে) তবে সেইগুলি করুন:

git checkout filename

আমি git rm filenameএটি অনাবৃত হওয়ার পরে চেষ্টা করছি এবং এটি কাজ করছে না। error: pathspec 'filename' did not match any file(s) known to git.
মিথ্যা পকেট

পূর্বাবস্থায় git rmgit checkout master -- filename
ফেলার সমাধানটি

3

কার্যত git restoreট্রি ফাইলগুলি পুনরুদ্ধার করতে গিট 2.23 কমান্ড প্রবর্তন করেছে ।

https://git-scm.com/docs/git-restore

বর্তমান ডিরেক্টরিতে সমস্ত ফাইল পুনরুদ্ধার করতে

গিট পুনরুদ্ধার।

আপনি যদি সূচকের সংস্করণটির সাথে মেলে সমস্ত সি উত্স ফাইলগুলি পুনরুদ্ধার করতে চান তবে আপনি এটি করতে পারেন

গিট পুনরুদ্ধার '* .সি'


1
এটি গিট ২.২৩ , ২.১৩ নয়
ফুক্লভিভি

2

আপনি কেবল নিম্নলিখিত গিট কমান্ডটি ব্যবহার করতে পারেন যা আপনার ভাণ্ডারে তৈরি সমস্ত আপত্তিজনক পরিবর্তন ফিরিয়ে আনতে পারে:

git checkout .

উদাহরণ:

ABC@ABC-PC MINGW64 /c/xampp/htdocs/pod_admin (master)
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   application/controllers/Drivers.php
        modified:   application/views/drivers/add.php
        modified:   application/views/drivers/load_driver_info.php
        modified:   uploads/drivers/drivers.xlsx

no changes added to commit (use "git add" and/or "git commit -a")

ABC@ABC-PC MINGW64 /c/xampp/htdocs/pod_admin (master)
$ git checkout .

ABC@ABC-PC MINGW64 /c/xampp/htdocs/pod_admin (master)
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.

nothing to commit, working tree clean

-2

আমি সাধারণত এইভাবে ব্যবহার করি যা ভালভাবে কাজ করে:

mv fold/file /tmp
git checkout fold/file

এটি হ'ল 357 "লাইক" দেওয়া লোকটির প্রস্তাব একই রকম। কেবলমাত্র আপনি সদ্য পরীক্ষা করা ফাইলটির একটি ব্যাকআপ তৈরি করেন create
ম্যাথিয়া

-3

একটি নিরাপদ এবং দীর্ঘ পথ:

  1. git branch todelete
  2. git checkout todelete
  3. git add .
  4. git commit -m "I did a bad thing, sorry"
  5. git checkout develop
  6. git branch -D todelete

-3

ব্যবহার করুন:

git reset HEAD filepath

উদাহরণ স্বরূপ:

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