গিট সমস্ত অননুমোদিত বা সংরক্ষিত পরিবর্তনগুলি পূর্বাবস্থায় ফেরান


834

আমি আমার শেষ প্রতিশ্রুতি থেকে সমস্ত পরিবর্তন পূর্বাবস্থায় নেওয়ার চেষ্টা করছি। আমি চেষ্টা করেছি git reset --hardএবং এই পোস্টটিgit reset --hard HEAD দেখার পরে । আমি এখন 18c3773 এ মাথা দিয়ে প্রতিক্রিয়া জানালাম ... তবে যখন আমি আমার স্থানীয় উত্সটি দেখি তখন সমস্ত ফাইল এখনও আছে। আমি কী মিস করছি?


1
এটি সরাসরি
গিথুব

সহজেই বুঝতে এবং পড়তে সহজ: git-scm.com/book/en/v2/Git-Basics- উদ্বোধন- কথা
MyTitle

উত্তর:


1619
  • এটি আপনার সাথে মঞ্চায়িত সমস্ত ফাইল আনস্টেজ করবে git add:

    git reset
    
  • এটি সমস্ত স্থানীয় অননুমোদিত পরিবর্তনগুলি ফিরিয়ে দেবে (রেপো রুটে কার্যকর করা উচিত):

    git checkout .
    

    আপনি কেবল নির্দিষ্ট ফাইল বা ডিরেক্টরিতে অননুমোদিত পরিবর্তনগুলিও ফিরিয়ে দিতে পারেন:

    git checkout [some_dir|file.txt]
    

    সমস্ত অননুমোদিত পরিবর্তনগুলি ফিরিয়ে আনার আর একটি উপায় (টাইপ করতে দীর্ঘতর তবে কোনও উপ-ডিরেক্টরি থেকে কাজ করে):

    git reset --hard HEAD
    
  • এটি সমস্ত স্থানীয় তালিকাভুক্ত ফাইলগুলি সরিয়ে ফেলবে, সুতরাং কেবল গিট ট্র্যাক করা ফাইলগুলি রয়ে যাবে:

    git clean -fdx
    

    সতর্কতা: -x নির্দিষ্ট করা ফাইলগুলি সহ সমস্ত উপেক্ষা করা ফাইলও সরিয়ে ফেলবে .gitignore! আপনি -nমুছে ফেলা ফাইলের প্রাকদর্শন জন্য ব্যবহার করতে চাইতে পারেন ।


এর সংক্ষিপ্তসারটি হিসাবে: নীচের কমান্ডগুলি কার্যকর করা মূলত git cloneমূল উত্স থেকে তাজা সমতুল্য (তবে এটি কোনও কিছু পুনরায় ডাউনলোড করে না, তাই অনেক দ্রুত):

git reset
git checkout .
git clean -fdx

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


@ টিউরিব ঠিক আছে আমার প্রকল্পটি বেশ কয়েকবার শুরু করতে হয়েছিল কারণ এটি ডাউনলোড করা সমস্ত নির্ভরতা এবং আমার .idea ফোল্ডারটি সরিয়ে ফেলছিল। একটি ভাল সমাধান প্রয়োজন।
এরেসদেভ

2
@ ইরেসদেব, আপনাকে কার্যকর করতে হবে না git clean, এটি অনির্দিষ্ট পরিবর্তনগুলিকে পূর্বাবস্থায় ফিরিয়ে আনবে তবে সমস্ত চিহ্নবিহীন বা যুক্ত ফাইলগুলি রাখবে। তবে, এটি বিল্ড ফলাফলকে প্রভাবিত করতে পারে কারণ কিছু চিহ্নবিহীন ফাইলগুলি হস্তক্ষেপ করতে পারে। যেমন যদি আপনার .idea ডিরেক্টরিটি দূষিত হয়?
এমভিপি

git resetআমাকে বলুন যে আমার যে পরিবর্তনগুলি সংরক্ষণ করা দরকার
ড্যানিয়েল স্প্রিংগার

1
দৌড়াতে git clean -fdxআমার node_modulesএবং .env, দুর্দান্ত
fires3as0n

1
@ fires3as0n আপনি আর কী আশা করেছিলেন? এটি ঘটতে বাধ্য ছিল। উত্তরেও একটি সতর্কতা রয়েছে।
রিশভ

148

আপনি যদি সমস্ত অননুমোদিত পরিবর্তনগুলি " পূর্বাবস্থাপন " করতে চান তবে কেবল রান করুন:

git stash
git stash drop

আপনার যদি যদি কোনও ট্রেডবিহীন ফাইল থাকে (চলমান দ্বারা পরীক্ষা করুন git status), এগুলি চালিয়ে মুছে ফেলা হতে পারে:

git clean -fdx

git stashএকটি নতুন লুকোবার জায়গা যা হয়ে যাবে সৃষ্টি লুকোবার জায়গা @ {0} । আপনি যদি প্রথমে চেক করতে চান তবে git stash listআপনার স্ট্যাশগুলির একটি তালিকা দেখতে ছুটে যেতে পারেন। এটি দেখতে এমন কিছু দেখাবে:

stash@{0}: WIP on rails-4: 66c8407 remove forem residuals
stash@{1}: WIP on master: 2b8f269 Map qualifications
stash@{2}: WIP on master: 27a7e54 Use non-dynamic finders
stash@{3}: WIP on blogit: c9bd270 some changes

প্রতিটি স্ট্যাশ পূর্ববর্তী কমিট ম্যাসেজের নামে নামকরণ করা হয়।


2
সত্যিই একটি ভাল সমাধান তবে আপনাকে git add .আগে ব্যবহার করে পরিবর্তনগুলি পর্যায়ক্রমে করা দরকার git stashকারণ এটি আমাকে পরেও git stash
আপত্তিহীন

21

এছাড়াও রয়েছে git stash- যা আপনার স্থানীয় পরিবর্তনগুলিকে "স্ট্যাশ" করে এবং পরবর্তী সময়ে আবার প্রয়োগ করা যেতে পারে বা আর প্রয়োজন না হলে বাদ দেওয়া যেতে পারে

স্ট্যাশিং সম্পর্কিত আরও তথ্য


12

আমি উত্স ট্রি ব্যবহার করছি .... আপনি 2 সহজ পদক্ষেপের সাহায্যে সমস্ত আপত্তিহীন পরিবর্তনগুলি ফিরিয়ে দিতে পারেন:

1) কেবল ওয়ার্কস্পেস ফাইলের স্থিতি পুনরায় সেট করতে হবে

এখানে চিত্র বর্ণনা লিখুন 2) সমস্ত আনস্টেজ ফাইল নির্বাচন করুন (কমান্ড + এ), ডান ক্লিক করুন এবং অপসারণ নির্বাচন করুন

এখানে চিত্র বর্ণনা লিখুন

এটি এত সহজ: ডি


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


7

যারা এখানে পৌঁছেছেন তাদের অন্বেষণ করতে পারছে কিনা তা অনুসন্ধান git clean -f -dকরে, যার মাধ্যমে গ্রহনে তৈরি একটি ফাইল মুছে ফেলা হয়েছে,

আপনি "স্থানীয় ইতিহাস থেকে পুনরুদ্ধার" রেফ ব্যবহার করে ইউআই থেকে একই কাজ করতে পারেন: স্থানীয় ইতিহাস থেকে পুনরুদ্ধার করুন


3
আমি ভোটটি নামি নি তবে আপনার উত্তরটি আপনার অভিপ্রায়ের চেয়ে কম পরিষ্কার; আপনি যদি উত্তরটিতে প্রথম বাক্যটি উদ্ধৃত করে থাকেন তবে এটি সহায়তা করবে।
মার্ক স্কুলথিস

5

একটি অঙ্গীকার থেকে নতুন প্রতিশ্রুতিতে রূপান্তরকারী রাষ্ট্রসমূহ

0. last commit,i.e. HEAD commit
1. Working tree changes, file/directory deletion,adding,modification.
2. The changes are staged in index
3. Staged changes are committed

রাষ্ট্র পরিবর্তনের জন্য পদক্ষেপ

0->1: manual file/directory operation
1->2: git add .
2->3: git commit -m "xxx"

পরীক্ষা করুন

0->1: git diff
0->2: git diff --cached
0->1, and 0->2: git diff HEAD
last last commit->last commit: git diff HEAD^ HEAD

শেষ প্রতিশ্রুতিতে ফিরে যান

2->1: git reset
1->0: git checkout .     #only for tracked files/directories(actions include modifying/deleting tracked files/directories)
1->0: git clean -fdx     #only for untracked files/directories(action includes adding new files/directories)
2->1, and 1->0: git reset --hard HEAD

কোনও কিছুই পুনরায় ডাউনলোড না করে গিট ক্লোন সমান

git reset && git checkout . && git clean -fdx

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