একটি শাখায় করা সমস্ত পরিবর্তন কীভাবে বাতিল করবেন?


116

আমি একটি শাখায় কাজ করছি (অর্থাত্ design) এবং আমি বেশ কয়েকটি পরিবর্তন করেছি, তবে সংগ্রহস্থলের সংস্করণটির সাথে মিলে আমার সেগুলি সমস্ত ত্যাগ করে পুনরায় সেট করতে হবে। আমি ভেবেছিলাম git checkout designএটি করবে, তবে এটি কেবল আমাকে জানায় আমি ইতিমধ্যে শাখায় রয়েছি designএবং আমার কাছে 3 টি পরিবর্তিত ফাইল রয়েছে।

আমি কীভাবে এই পরিবর্তনগুলি বাতিল করব এবং ব্রাঞ্চটি এখন দূরবর্তী সার্ভারে দাঁড়িয়ে আছে তাই?

উত্তর:


207

দ্রষ্টব্য: আপনি এটি অন্তর্ভুক্ত করতে পারবেন না

ব্যবহার করে দেখুন git checkout -fএই কোনও স্থানীয় পরিবর্তন যা করছে বাতিল করবে না সংঘটিত সব শাখা এবং মাস্টার।


86

গিট রিসেট - আপনি যদি আপনার শেষ প্রতিশ্রুতি থেকে সমস্ত কিছু ফেলে দিতে চান তবে আপনাকে সহায়তা করতে পারে


6
বাgit reset --hard HEAD^
ডেডফিশ

27
git reset --hard HEAD^সত্যই গ্রহণযোগ্য উত্তর হওয়া উচিত। ওপি অন্যান্য শাখা সম্পর্কে জিজ্ঞাসা করছিল না ...
vphilipnyc

2
আমি এটি চেষ্টা করেছিলাম এবং আমি মনে করি এটি আমার শেষ প্রতিশ্রুতি নয়, আমার শেষ ধাক্কা থেকে সমস্ত কিছু মুছে ফেলে।
চেজ রবার্টস

3
আমি গিট রিসেট করার চেষ্টা করেছি - হ্যাড হেড ^ এবং এটি এখনও অবিরত ফাইলগুলি একগুচ্ছ রেখে গেছে। এখন গুগল করতে কীভাবে সেগুলিকে একটি সাধারণ কমান্ডে মুছে ফেলা যায়।
জন দেইঘান

20
git diff master > branch.diff
git apply --reverse branch.diff

এই পদক্ষেপগুলি খুব কার্যকর হতে পারে, যদি আপনার লক্ষ্যটি একটি নির্দিষ্ট শাখার স্থিতিকে মাস্টার শাখার সাথে সমান করে দেয়। এটি করার জন্য, নির্দিষ্ট শাখার মধ্যে থেকে এটি চালান, এবং তারপরে [শাখার নাম] .ডিফ ফাইলটি git rm [branch name].diff
মুছুন

18

আপনি যদি কোনও পরিবর্তন চান না designএবং এটি অবশ্যই কোনও দূরবর্তী শাখার সাথে মিলে যেতে চান তবে আপনি কেবল শাখাটি মুছুন এবং পুনরায় তৈরি করতে পারেন:

# Switch to some branch other than design
$ git br -D design
$ git co -b design origin/design            # Will set up design to track origin's design branch

7
এছাড়াও: গিট চেকআউট নকশা; গিট রিসেট --হাড় উত্স / নকশা
ড্যান

আমি শাখাটি মোছার আগেও প্রতিশ্রুতিবদ্ধ
Asarluhi

যদি আপনি স্থানীয় শাখায় কমিট করে থাকেন যা দূরবর্তী অঞ্চলে নেই, তবে এটি আমার মতে সত্যিই বিভ্রান্তিকর পরিস্থিতিতে পড়ার একটি রেসিপি। আমি অবশ্যই এই সমাধানটি ব্যবহার করব না
এয়ারওক

1
@ ইরিওক: ঠিক আছে, প্রশ্নটি বিশেষভাবে বলেছে যে প্রশ্নকর্তা সমস্ত পরিবর্তনগুলি বাতিল করতে চান।
মিপাদি

এবং আমি মনে করি না যে এই উত্তরটি এটি অর্জন করেছে।
এরেকো

7

@ উইল, গিট নিমজ্জন একটি সত্যিই দুর্দান্ত এবং সহজ গিট টিউটোরিয়াল। এটি আপনাকে নীচের কেসগুলির জন্য কীভাবে পরিবর্তনগুলি পূর্বাবস্থায় আনতে হবে তা দেখাবে: অস্থির, স্টেজড এবং প্রতিশ্রুতিবদ্ধ। ল্যাব 14-18


2
আমি কেবল বলতে চাই এখন আমি গিট নিমজ্জন করেছি .. এক বছর পরে। OI! আমি এত শুভস্য এই কাজ করা উচিত ছিল ...
উইল

1
এটি Rubyইনস্টল করা দরকার..যে সবসময় পছন্দ মনে হয় না
বিষ্ণু

5

আপনি যখন আপনার স্থানীয় শাখায় পরিবর্তনগুলি বাতিল করতে চান, আপনি গিট স্ট্যাশ কমান্ড ব্যবহার করে এই পরিবর্তনগুলি স্ট্যাশ করতে পারেন।

গিট স্ট্যাশ "কিছু_নাম" সংরক্ষণ করুন

আপনার পরিবর্তনগুলি সংরক্ষণ করা হবে এবং আপনি যদি চান বা আপনি এটি মুছতে পারেন তবে আপনি পরে এগুলি পুনরুদ্ধার করতে পারেন। এটি করার পরে, আপনার শাখায় কোনও আপত্তিজনক কোড থাকবে না এবং আপনি গিট টান ব্যবহার করে আপনার মূল শাখা থেকে সর্বশেষতম কোডটি টানতে পারেন।



0

সমস্ত পরিবর্তনগুলি বাতিল করার জন্য বিকল্প পদ্ধতি:

আমি একটি মার্জ করার পরে এবং চেকআউটটি তত্ক্ষণাত বিকাশ করতে ভুলে যাওয়ার পরে এই প্রশ্নটি পেয়েছি । আপনি এটি অনুমান করেছেন: আমি সরাসরি মাস্টারে কয়েকটি ফাইল সংশোধন করতে শুরু করেছি । ডি ওহ! যেহেতু আমার পরিস্থিতি খুব কমই অনন্য (আমরা সকলেই এটি করে ফেলেছি, আমরা তা করি নি; ->), আমি আবার একটি বিকাশের মতো মাস্টারকে দেখাতে সমস্ত পরিবর্তনগুলি বাতিল করার জন্য ব্যবহার করেছিলাম ।

একটি করছেন পরে git diffকি ফাইল পরিবর্তন করা হয়েছে দেখতে এবং আমার ত্রুটির সুযোগ মূল্যায়ন করার আমি মৃত্যুদন্ড কার্যকর:

git stash
git stash clear

প্রথমে সমস্ত পরিবর্তন স্থির করার পরে সেগুলি পরে সাফ করা হয়েছে। মাস্টার হিসাবে ত্রুটিযুক্ত ফাইলগুলিতে করা সমস্ত পরিবর্তন চলে গিয়েছিল এবং সমতা পুনরুদ্ধার করা হয়েছিল।

ধরা যাক আমি এখন এই পরিবর্তনগুলি পুনরুদ্ধার করতে চাইছিলাম। আমি এটা করতে পারবো. প্রথম পদক্ষেপটি হ'ল স্ট্যাশগুলির হ্যাশ সন্ধান করা যা আমি স্রেফ সাফ / বাদ দিয়েছি:

git fsck --no-reflog | awk '/dangling commit/ {print $3}'

হ্যাশ শিখার পরে, আমি সফলভাবে এর সাথে আপমুক্ত পরিবর্তনগুলি পুনরুদ্ধার করেছি:

git stash apply hash-of-cleared-stash

আমি সত্যিই এই পরিবর্তনগুলি পুনরুদ্ধার করতে চাইনি, কেবল তাদের বৈধ করে তুলতে চাইলে বৈধতা চেয়েছিলাম, তাই আমি সেগুলি আবার সাফ করে দিয়েছি।

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

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


-1

git checkout -f

এটি আপনার প্রশ্নের পক্ষে যথেষ্ট। কেবল জিনিসটি একবার হয়ে যায়, শেষ হয়ে যায়। কোনও পূর্বাবস্থা নেই।

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